Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计数和列表内的列表出现次数按描述排序计数_Java_List - Fatal编程技术网

Java 计数和列表内的列表出现次数按描述排序计数

Java 计数和列表内的列表出现次数按描述排序计数,java,list,Java,List,以下是我的功能: public static void countKeywords(List<String> list) { Map<String, Long> counts = list.stream().collect(Collectors.groupingBy(e -> e, Collectors.counting())); System.out.println(counts); } 我需要它是按下降方向的发生计数排序

以下是我的功能:

public static void countKeywords(List<String> list) {
    Map<String, Long> counts =
            list.stream().collect(Collectors.groupingBy(e -> e, Collectors.counting()));
    System.out.println(counts);
}
我需要它是按下降方向的发生计数排序的。因此,输出必须如下所示:

  factory - 3
  alarm - 2
  player - 1 

我做错了什么?

问题是您使用的数据结构。普通映射不能保证顺序或排序。如果您开始使用映射作为结构,我将看一看treemapapi。它允许您在映射构造函数中定义一个比较器

公共静态void countKeywords(列表){
Map counts=list.stream().collect(Collectors.groupingBy(e->e,Collectors.counting());
系统输出打印项次(计数);
TreeMap sortedMap=新的TreeMap(新的比较器(){
@凌驾
公共整数比较(字符串键1、字符串键2){
返回counts.get(键2).compareTo(counts.get(键1));
}
});
分类地图putAll(计数);
系统输出打印项次(分类地图);
}

你试过使用Collections.sort吗?@ZeldaZach确切的位置在哪里?我觉得这是一个家庭作业问题,所以我会让你找出这一部分:)我将它标记为Java 8的副本Wordcount的可能副本
  factory - 3
  alarm - 2
  player - 1 
public static void countKeywords(List<String> list) {
    Map<String, Long> counts = list.stream().collect(Collectors.groupingBy(e -> e, Collectors.counting()));
    System.out.println(counts);

    TreeMap<String, Long> sortedMap = new TreeMap<String, Long>(new Comparator<String>() {
        @Override
        public int compare(String key1, String key2) {
            return counts.get(key2).compareTo(counts.get(key1));
        }
    });

    sortedMap.putAll(counts);
    System.out.println(sortedMap);
}