Java.util.Map.Entry和Collection.sort(列表,比较器)
我正在用java执行一些操作,我必须从文件中读取单词,然后 将这些单词放入映射类型Hashmap(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
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()));