-2
public class MapKeyExample {
    public static void main(String[] args){

        //Initializing a Map of type HashMap
        Map<Integer, String> map = new HashMap<>();
        Set<Integer> s = new HashSet<>();
        map.put(1, "One");
        map.put(3, "Three");
        map.put(5, "Five");
        map.put(7, "Seven");
        map.put(9, "Nine");
        System.out.println(map);
        s = map.keySet();
        System.out.println(s);
    }
}

现在输出是

{1=One, 3=Three, 5=Five, 7=Seven, 9=Nine}
[1, 3, 5, 7, 9]

s 的预期输出为:

[1, 5, 3, 9, 7]

有人可以告诉我如何将其修改为 Linkedhashmap 或树形图吗?非常感谢。

4

2 回答 2

4

您所说的“将其更改为我想要的顺序”并不完全清楚。

但是,Java 提供了以下选项:

  • 可以按照插入条目的相同顺序迭代LinkedHashMap
  • TreeMap的构造函数允许您提供一个Comparator,它将定义键的顺序。
于 2019-10-27T20:26:55.947 回答
0

对于大多数类型的地图,键的顺序是未定义的。中支持键的排序TreeMap。在您的情况下,默认顺序( 的自然顺序Integer)就足够了。要生成您自己的订单,请实现相应的比较器。

public class MyComparator implements Comparator<Integer> {
    public int compare(Integer i1, Integer i2) {
        ...
        // If i1 should be before i2, return -1
        // If i1 should be after i2, return 1
        // Otherwise return 0
    }
}
于 2019-10-27T20:17:29.247 回答