Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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中对map.keySet()进行排序?_Java_Hashmap_Sortedmap_Keyset - Fatal编程技术网

如何在Java中对map.keySet()进行排序?

如何在Java中对map.keySet()进行排序?,java,hashmap,sortedmap,keyset,Java,Hashmap,Sortedmap,Keyset,s的预期输出为: {1=One, 3=Three, 5=Five, 7=Seven, 9=Nine} [1, 3, 5, 7, 9] 有人能告诉我如何将其修改为Linkedhashmap或treemap吗?非常感谢。对于大多数类型的地图,键的顺序尚未定义。树状图中支持对键进行排序。在您的情况下,默认顺序(整数的自然顺序)就足够了。要生成自己的命令,请实现相应的比较器 [1, 5, 3, 9, 7] 公共类MyComparator实现Comparator{ 公共整数比较(整数i1、整数i2){

s的预期输出为:

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

有人能告诉我如何将其修改为Linkedhashmap或treemap吗?非常感谢。

对于大多数类型的地图,键的顺序尚未定义。
树状图中支持对键进行排序。在您的情况下,默认顺序(整数的自然顺序)就足够了。要生成自己的命令,请实现相应的比较器

[1, 5, 3, 9, 7]
公共类MyComparator实现Comparator{
公共整数比较(整数i1、整数i2){
...
//如果i1应该在i2之前,则返回-1
//如果i1应该在i2之后,则返回1
//否则返回0
}
}

不太清楚您所说的“按我想要的顺序更改”是什么意思

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

  • 可以按照插入条目的相同顺序迭代
  • TreeMap
    的构造函数允许您提供一个
    比较器,它将定义键的顺序

使用
SortedMap
而不是
HashMap
。您能解释预期的输出吗?它遵循什么模式?@Marvin没有模式因为我想指定顺序并将其更改为我想要的顺序,我尝试了TreeMap,但它给了我整数的自然顺序。@Cecilia问“你能演示如何将其转换为我想要的顺序吗?”如果你不能解释什么是你想要的顺序,我不希望它是自然顺序,有没有办法我可以指定顺序并将其更改为我想要的顺序,我尝试了TreeMap,但它给了我整数的自然顺序。你可以实现自己的比较器,并在创建TreeMap时将其用作参数。在这个比较器中,实现产生所需顺序的逻辑。非常感谢。请参阅更新的答案。
[1, 5, 3, 9, 7]
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
    }
}