Java.util.Map.Entry和Collection.sort(列表,比较器)

Java.util.Map.Entry和Collection.sort(列表,比较器),java,dictionary,collections,comparator,Java,Dictionary,Collections,Comparator,我正在用java执行一些操作,我必须从文件中读取单词,然后 将这些单词放入映射类型Hashmap(word)中。一切都完成了 下一组对(键入java.util.Map.Entry),保存到列表(List)中,然后按Collections.sort(List,Comparator)对其排序。 但是它不起作用,因为它说排序不合适,而且我对这种排序没有太多的经验,有人能在当前的示例中帮助我如何。。。谢谢你的帮助 代码中有一部分: public static void Reader(){ cla

我正在用java执行一些操作,我必须从文件中读取单词,然后 将这些单词放入映射类型Hashmap(
word
)中。一切都完成了

下一组对(键入java.util.Map.Entry),保存到列表(
List
)中,然后按Collections.sort(List,Comparator)对其排序。 但是它不起作用,因为它说排序不合适,而且我对这种排序没有太多的经验,有人能在当前的示例中帮助我如何。。。谢谢你的帮助

代码中有一部分:

public static void Reader(){

   class Word{
    private String key;     
    private int value;


    public int getValue(){
        return value;
    }

    public void setValue(){
        value=this.value;
    }

    public String getKey(){
        return key;
    }

    public void setKey(){
        key=this.key;
    }

    public Word(String key,Integer value){
        this.key= key;
        this.value = value;

    }
    public Word(){

    }

  }

    Map<String, Integer> wordsmap = new HashMap<String, Integer>();
        wordsmap.put("car",2); // wordsmap.put(word as key,frequency as value)
        wordsmap.put("bike",6);
        wordsmap.put("like",1);

       List<Entry<String,Integer>> words = new ArrayList<>(wordsmap.entrySet());

       Collections.sort(words,new Comparator<Word>(){
       public int compare(Word o1,Word o2){
           return o1.getValue() - o2.getValue();
       }

   });
  }


 public static void main(String[] args) {

        Reader();
    }
publicstaticvoid读取器(){
类词{
私钥;
私有int值;
public int getValue(){
返回值;
}
public void setValue(){
value=this.value;
}
公共字符串getKey(){
返回键;
}
public void setKey(){
key=this.key;
}
公共字(字符串键,整数值){
这个。键=键;
这个值=值;
}
公共词(){
}
}
Map wordsmap=newhashmap();
wordsmap.put(“car”,2);//wordsmap.put(单词作为键,频率作为值)
单词map.put(“bike”,6);
单词映射put(“like”,1);
List words=newarraylist(wordsmap.entrySet());
Collections.sort(words,newcomparator(){
公共整数比较(单词o1,单词o2){
返回o1.getValue()-o2.getValue();
}
});
}
公共静态void main(字符串[]args){
读取器();
}
使用
比较器对
列表进行排序


@brianRoach感谢您抽出时间,但我知道,这里有java文档和数百个示例。我正在寻找一个人谁可以解释这个例子,而不是发送链接。但也谢谢你。你的代码不起作用/没有意义。为什么要创建一个不使用的
slova
类和一个使用的
slova
变量?为什么你使用
word1
和其他没有定义它们的词?@nathanielwaisbrot这是单词1的错误,这意味着我会在地图中输入一些文本中频率较高的词,例如slova.put(“car”,5)。我会修理它。对于slova类,我使用getValue()。。。但当然,我看到了很多比较器的例子,我不知道如何在我的例子中使用它,所以我尝试了一些,还有slova类。下一步如何使这个比较器工作?谢谢你…你的代码仍然很混乱。我建议在进一步尝试之前与讲师交谈或阅读一些关于Java的介绍性文本。@Serġan我添加了一个lambda版本(发布此答案时还没有)。顺便说一句,该问题目前计划作为[条目]的一部分删除burnination-这个应该保留吗?@EJoshuaS它不应该有入口标签,我已经删除了。
Collections.sort(seznam, new Comparator<Entry<String, Integer>(){
   public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2){
       return o1.getKey().compareTo(o2.getKey()); // for example
   }
});
Collections.sort(seznam, (o1, o2) -> o1.getKey().compareTo(o2.getKey()));