题解 | #记票统计#
import java.util.Scanner;
import java.util.LinkedHashMap;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//这个是默认输入顺序的键值对集合,HashMap是无序的
LinkedHashMap<String, Integer> map = new LinkedHashMap<String, Integer>();
while (in.hasNextInt()) {
int nnum = in.nextInt();
in.nextLine();
String name = in.nextLine(); //候选人
int tnum = in.nextInt();
in.nextLine();
String tname = in.nextLine(); //候选人的票
String[] ary = name.split(" ");
for (String str : ary) {
map.put(str, 0);//把所有获选人加入map,赋值0
}
String[] tary = tname.split(" ");
int invalid = 0;
for (int i = 0; i < tary.length; i++) {
String tempname = tary[i];
if (map.containsKey(tempname)) {//是候选人就票数+1
map.put(tempname, map.get(tempname) + 1);
} else {
invalid++;//不是就+1
}
}
//输出
for (String key : map.keySet()) {
int value = map.get(key);
System.out.println(key + " : " + value);
}
System.out.println("Invalid : "+invalid);
}
}
}
主要是用到LinkedHashMap集合,这个集合就是不改变加入集合元素的相对位置,按照题目要求需要"按照输入的顺序"输出,用LinkedHashMap既能不变序,也能记录累计票数,要多学会用java里的集合
