Java流排序不工作

Java流排序不工作,java,sorting,java-8,java-stream,Java,Sorting,Java 8,Java Stream,我有一个 HashMap<String,Integer> map 我想按值降序排序 我有: 但topsorted仍然与map相同,根本不进行排序 有人能解释一下我做错了什么吗。你不能把它分类 您可以使用LinkedHashMap,它为您提供了特定的迭代顺序。HashMap没有顺序。你不能把它分类 您可以使用LinkedHashMap,它为您提供了特定的迭代顺序。试试这个 public class OrderByValue { public static void

我有一个

HashMap<String,Integer> map 
我想按值降序排序 我有:

但topsorted仍然与map相同,根本不进行排序

有人能解释一下我做错了什么吗。你不能把它分类

您可以使用LinkedHashMap,它为您提供了特定的迭代顺序。

HashMap没有顺序。你不能把它分类

您可以使用LinkedHashMap,它为您提供了特定的迭代顺序。

试试这个

public class OrderByValue {

        public static void main(String a[]){
            Map<String, Integer> map = new HashMap<String, Integer>();
            map.put("java", 20);
            map.put("C++", 45);
            map.put("Java2Novice", 2);
            map.put("Unix", 67);
            map.put("MAC", 26);
            map.put("Why this kolavari", 93);
            Set<Entry<String, Integer>> set = map.entrySet();
            List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(set);
            Collections.sort( list, new Comparator<Map.Entry<String, Integer>>()
                    {
                public int compare( Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2 )
                {
                    return (o2.getValue()).compareTo( o1.getValue() );
                }
                    } );
            for(Map.Entry<String, Integer> entry:list){
                System.out.println(entry.getKey()+" ==== "+entry.getValue());
            }
        }
    }    
试试这个

public class OrderByValue {

        public static void main(String a[]){
            Map<String, Integer> map = new HashMap<String, Integer>();
            map.put("java", 20);
            map.put("C++", 45);
            map.put("Java2Novice", 2);
            map.put("Unix", 67);
            map.put("MAC", 26);
            map.put("Why this kolavari", 93);
            Set<Entry<String, Integer>> set = map.entrySet();
            List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(set);
            Collections.sort( list, new Comparator<Map.Entry<String, Integer>>()
                    {
                public int compare( Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2 )
                {
                    return (o2.getValue()).compareTo( o1.getValue() );
                }
                    } );
            for(Map.Entry<String, Integer> entry:list){
                System.out.println(entry.getKey()+" ==== "+entry.getValue());
            }
        }
    }    

谢谢,你是对的,我只是忘了HashMap没有被订购Hanks,你是对的,我只是忘了HashMap没有被订购除了被接受的答案解释的错误之外,你应该注意你可以简单地使用…@Holger哇,我不知道,谢谢!除了被接受的答案解释的错误之外,你应该注意你可以简单地使用…@Holger哇,我不知道,谢谢!