Java 如何在没有集合的情况下按值对LinkedHashMap进行排序。排序()?
我正在尝试为LinkedHashMap/ArrayList编写一个选择排序方法,但我遇到了一些问题,我不确定出了什么问题。它会编译列表,但实际上不会对列表进行排序。我试着按值降序排序。任何帮助都将不胜感激Java 如何在没有集合的情况下按值对LinkedHashMap进行排序。排序()?,java,sorting,dictionary,hashmap,selection-sort,Java,Sorting,Dictionary,Hashmap,Selection Sort,我正在尝试为LinkedHashMap/ArrayList编写一个选择排序方法,但我遇到了一些问题,我不确定出了什么问题。它会编译列表,但实际上不会对列表进行排序。我试着按值降序排序。任何帮助都将不胜感激 public static List sort(LinkedHashMap<String, Integer> words) { List<Map.Entry<String, Integer>> entries = new ArrayLis
public static List sort(LinkedHashMap<String, Integer> words) {
List<Map.Entry<String, Integer>> entries = new ArrayList<>(words.size());
entries.addAll(words.entrySet());
int max;
for(int i = 0; i < entries.size(); i++) {
max = entries.get(i).getValue();
for(int j = i + 1; j < entries.size(); j++) {
if (entries.get(j).getValue().compareTo(entries.get(max).getValue()) > 0) {
max = entries.get(j).getValue();
}
}
if(max != i) {
Map.Entry temp1 = entries.get(i);
entries.set(entries.get(i).getValue(), entries.get(max));
entries.set(entries.get(max).getValue(), temp1);
}
}
return entries;
}
公共静态列表排序(LinkedHashMap字){
列表条目=新的ArrayList(words.size());
entries.addAll(words.entrySet());
int max;
对于(int i=0;i0){
max=entries.get(j).getValue();
}
}
如果(最大!=i){
Map.Entry temp1=entries.get(i);
entries.set(entries.get(i).getValue(),entries.get(max));
entries.set(entries.get(max.getValue(),temp1);
}
}
返回条目;
}
您的代码基本上是正确的,您只是在一些地方混淆了值和索引
您需要替换:
max = entries.get(i).getValue();
与
这个
与
及
与
确保您理解更改的原因。您的代码基本上是正确的,只是在一些地方混淆了值和索引 您需要替换:
max = entries.get(i).getValue();
与
这个
与
及
与
确保您理解更改的原因。在本代码中,索引和值似乎可以互换使用,
max
被分配给值,但随后与索引进行比较。在本代码中,索引和值似乎可以互换使用,max
分配给值,但与索引进行比较。我不确定这是否就是错误的全部。它将最高的值放在第一位,这是它应该做的,但其余的值仍然是混乱的。是的,错过了一个。我现在已经加上了。我不确定这是不是错的。它将最高的值放在第一位,这是它应该做的,但其余的值仍然是混乱的。是的,错过了一个。我现在已经添加了它。
max = entries.get(j).getValue();
max = j;
entries.set(entries.get(i).getValue(), entries.get(max));
entries.set(entries.get(max).getValue(), temp1);
entries.set(i, entries.get(max));
entries.set(max, temp1);