题解 | #记票统计#
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里的集合