u013986367
s030838
采纳率100%
2019-09-13 13:13

关于List 遍历后,统计元素出现次数的问题

5
已采纳

先上代码

public class Analyze {
    public void analyze(List<Result> list) {
        for (int i = 0; i < list.size(); i++) {
        System.out.println("名字:" + list.get(i).getName());
        }
    }
}

输出结果是

名字:张三
名字:张三
名字:张三
名字:张三
名字:张三
名字:李四
名字:李四
名字:李四
名字:王五

我想统计一下其中名字出现了多少次
比如

张三:5
李四:3
王五:1

其中

List<Result> list

是这样的

public class Result {
    private int pin;//员工编号
    private String Name;//员工名称
    private int defaultdeptid;//部门编号
    private Date checktime;//签到时间
    下面是get、set 。看起来太多我省略了…………

我是小白,代码写的也不好,求各位大佬指点迷津!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • wojiushiwo945you 毕小宝 2年前

    使用 Java 的 Map 类型,遍历过程中根据当前 name 信息进行存储并处理,demo:

    Map<String,Integer> result  = new HashMap<String,Integer>();
     for (int i = 0; i < list.size(); i++) {
             String name =  list.get(i).getName();
                    if(result.contains(name)){//存在则累加
                        result.put(name,result.get(name)+1);
                    }else{//不存在,则存入 1
                       result.put(name,1);
                    }
    }
    
    
    
    点赞 1 评论 复制链接分享
  • qq_19309473 Roc-xb 2年前
    public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("张三");
            list.add("张三");
            list.add("李四");
            list.add("王五");
            list.add("王五");
            list.add("王五");
            System.out.println(list);
            Map<String, Integer> map = frequencyOfListElements(list);
            System.out.println(map);
        }
    
        public static Map<String, Integer> frequencyOfListElements(List<String> items) {
            if (items == null || items.size() == 0)
                return null;
            Map<String, Integer> map = new HashMap<String, Integer>();
            for (String temp : items) {
                Integer count = map.get(temp);
                map.put(temp, (count == null) ? 1 : count + 1);
            }
            return map;
        }
    
    点赞 评论 复制链接分享