zoukankan      html  css  js  c++  java
  • java8-lambda-list中字符出现字数的统计

    @Test
    public void testStringCount(){


    List<String> moidList1 = new ArrayList<>();
    moidList1.add("1");
    moidList1.add("2");
    moidList1.add("2");
    moidList1.add("3");
    moidList1.add("3");
    moidList1.add("3");
    moidList1.add("4");
    moidList1.add("4");
    moidList1.add("4");
    moidList1.add("4");

    Map<String, Long> map1 = moidList1.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
    System.out.println("moid出现次数统计(moid=次数):" + map1);
    List<Map.Entry<String, Long>> list1 = new ArrayList<>(map1.entrySet());
    Collections.sort(list1, new Comparator<Map.Entry<String, Long>>()
    {
    @Override
    public int compare(Map.Entry<String, Long> o1, Map.Entry<String, Long> o2)
    {
    //按照value值,从小到大排序
    // return o1.getValue() - o2.getValue();

    //按照value值,从大到小排序
    // return o2.getValue() - o1.getValue();

    //按照value值,用compareTo()方法默认是从小到大排序
    return o2.getValue().compareTo(o1.getValue());
    }
    });

    for (Map.Entry s : list1)
    {

    System.out.println("出现次数最多的moid:" + s.getKey()+"--"+s.getValue());
    }

    }


    执行结果:

    moid出现次数统计(moid=次数):{1=1, 2=2, 3=3, 4=4}
    出现次数最多的moid:4--4
    出现次数最多的moid:3--3
    出现次数最多的moid:2--2
    出现次数最多的moid:1--1

    如果元素是int型,需要拿到出现次数最多的数字,则可以用下列方法(未测试,从其他地方拷贝的):

    int[] arr = {1, 2, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5};
    // 过程1 Collectors.groupingBy代表是分类,按照本身Function.identity()进行分类,那相同数字就会放在一起,Collectors.counting是统计相同数字的个数
    Map<Integer, Long> map = IntStream.of(arr).boxed().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
    System.out.println("数字出现次数统计(数字=次数):" + map);
     
    // 过程2 max方法是根据比较器(按照map的value进行排序)找出最大值
    Optional<Integer> maxOptional = map.entrySet().stream().max(Comparator.comparing(Map.Entry::getValue)).map(Map.Entry::getKey);
    System.out.println("出现次数最多的数字:" + maxOptional.get());

  • 相关阅读:
    angularJs中ngModel的坑
    Angular中ngModel的$render的详解
    typescript中的工具 tsd
    angula组件-通过键盘实现多选(原创)
    angular指令系列---多行文本框自动高度
    微信公众号系列 --- ionic在IOS的键盘弹出问题
    angular Jsonp的坑
    关于js的一些基本知识(类,闭包,变量)
    介绍Angular的注入服务
    2019 SDN大作业
  • 原文地址:https://www.cnblogs.com/zaierzai/p/13366200.html
Copyright © 2011-2022 走看看