题解 | #记票统计#

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里的集合

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务