Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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 可以按数组对HashMap进行排序吗_Java_Arrays_Sorting_Collections_Hashmap - Fatal编程技术网

Java 可以按数组对HashMap进行排序吗

Java 可以按数组对HashMap进行排序吗,java,arrays,sorting,collections,hashmap,Java,Arrays,Sorting,Collections,Hashmap,我想使用Arrays.sort对数组进行排序。我知道应该通过Collections.sort来完成,但是老师想要使用数组。sort这可能吗?我想通过comparator。您可以使用以下内容: Arrays.sort(yourHashMap.entrySet().toArray()); 据我所知,您不能直接使用Collections.sort或Arrays.sort对映射进行排序,但您可以使用树映射并向其传递一个比较器: Map<Integer, String> ma

我想使用Arrays.sort对数组进行排序。我知道应该通过Collections.sort来完成,但是老师想要使用数组。sort这可能吗?我想通过comparator。

您可以使用以下内容:

Arrays.sort(yourHashMap.entrySet().toArray());

据我所知,您不能直接使用Collections.sort或Arrays.sort对映射进行排序,但您可以使用树映射并向其传递一个比较器:

        Map<Integer, String> map = new TreeMap<Integer, String>(new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o1.compareTo(o2);
        }
    });

    map.put(1, "1");
    map.put(0, "0");
    map.put(3, "3");
    map.put(2, "2");

    System.out.println(map);
这将打印:{0=0,1=1,2=2,3=3} 因此它按键对条目进行排序。

您不能对HashMap本身进行排序,因为它不能保存顺序

您可以将键集、条目集或值集合提取到列表或数组中,然后对生成的数据结构进行排序。下面是一个例子:

HashMap<String, Integer> map = ...
String[] orderedKeys = map.keySet().toArray(new String[map.size()]);
Arrays.sort(orderedKeys, someStringComparator);
当然,这不会影响原始映射的键/值/条目的顺序


如果您希望映射中的键按排序顺序进行维护,则需要使用具有可比较键的树映射或合适的比较器。。。而不是HashMap。

此外,您不能使用collections.sort对映射进行排序。是否对映射项或值进行排序?是否对ArrayList或HashMap进行排序?第二个是不可能的,因为没有排序HashMap这样的思想