这个题目翻译是:输入一个数字,这个数字表示行数,每个行数一个颜色,最后输出输入次数最多的颜色。
我的思路是:输入数字(Scanner),输入颜色(Scanner),用Map集合储存数据,判断数字,遍历选出最多次数的颜色,通过值传递
Java数组的长度是固定的,在同一个数组中只能存放相同类型的数据。为了能方便存储和操纵数目不固定的一组数据,JDK类库提供了Java集合,所有的Java集合类都位于java.util包中,Java集合主要分为以下3种类型:set,list,map。set不按特定方式排序,并且没有重复对象。list:按照索引位置 排序,可以有重复对象。map:每一个元素包含一对键对象和值对象,集合没有重复的键对象,值对象可以重复。那么我们这里用map类型来存储数据,因为这样可以键对值方式来判断。
List(列表):ArrayList,创建对象:List list<数据类型> = new ArrayList<数据类型>();
Map: Map<String,String> map = new HashMap<String,String>();
HashMap迭代器:遍历Hash中的元素
在Hash中可以直接使用以下方法遍历(所有键)KeySet,然后通过键可以找出需要的值
1
2
3
4
5
6
|
HashMap<String,String> mp =
new
HashMap<String,String>();
for
(String i : mp.keySet())
{
//String 是mp中的键的对应类型 i 是对应的KeySet中的每一个键值
System.out.println( mp.get(i));
}
|
package sequence; import java.util.HashMap; import java.util.Map; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main1004 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int T = in.nextInt(); List<String> list = new ArrayList<>(); while (true) { Map<String, Integer> aMap = new HashMap<>(); if (T != 0) { int m = T; while (T > 0) { String bString = in.next(); if (aMap.get(bString) == null) { aMap.put(bString, 1); } else { int count = aMap.get(bString); aMap.remove(bString); count++; aMap.put(bString, count); } T--; } int i = 0; String result = null; for (String key : aMap.keySet()) { int a = aMap.get(key); if (a > i) { i = a; result = key; } } list.add(result); } else { for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } return; } } } }