Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 如何在没有集合的情况下按值对LinkedHashMap进行排序。排序()?_Java_Sorting_Dictionary_Hashmap_Selection Sort - Fatal编程技术网

Java 如何在没有集合的情况下按值对LinkedHashMap进行排序。排序()?

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

我正在尝试为LinkedHashMap/ArrayList编写一个选择排序方法,但我遇到了一些问题,我不确定出了什么问题。它会编译列表,但实际上不会对列表进行排序。我试着按值降序排序。任何帮助都将不胜感激

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);