这个题目翻译是:输入一个数字,这个数字表示行数,每个行数一个颜色,最后输出输入次数最多的颜色。
我的思路是:输入数字(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;
}
}
}
}