如何在Java中对map.keySet()进行排序?
s的预期输出为:如何在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){
{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
}
}