是否存在数据结构的映射,其中整数为键,字符串为值,无论插入顺序如何,最后都按键排序,就像插入第一个项{4,somevalue}一样,它将在第四个在进一步的申请流程中使用它时的地方
答案 0 :(得分:4)
听起来你正在寻找java.util.TreeMap<Integer, String>
。它根据密钥对条目进行排序。
答案 1 :(得分:2)
interface SortedMap<K,V>
定义了一种具有您正在寻找的行为的类型:
Map
进一步提供其键的总排序。地图按照其键的自然顺序排序,或通过排序地图创建时通常提供的Comparator
排序。迭代有序地图的集合视图(由entrySet
,keySet
和values
方法返回)时会反映此顺序。
可能感兴趣的SortedMap
的特定实现是TreeMap
:
基于Red-Black tree的
NavigableMap
实施。地图根据其键的自然顺序进行排序,或者根据地图创建时提供的Comparator
进行排序,具体取决于使用的构造函数。此实施为
log(n)
,containsKey
,get
和put
操作提供了有保证的remove
时间费用。
请注意interface NavigableMap<K,V> extends SortedMap<K,V>
。也就是说,NavigableMap
是SortedMap
,但它还指定了其他方法,例如包罗万象的界限subMap
。如果您不需要这些额外的功能,那么只需SortedMap
即可。
这显示了NavigableSet<K,V>
的基本用法:
NavigableMap<Integer,String> nmap =
new TreeMap<Integer,String>();
nmap.put(3, "Three");
nmap.put(1, "One");
nmap.put(4, "Four");
nmap.put(5, "Five");
nmap.put(7, "Seven");
System.out.println(nmap);
// {1=One, 3=Three, 4=Four, 5=Five, 7=Seven}
System.out.println(nmap.firstKey()); // 1
System.out.println(nmap.lastEntry().getValue()); // Seven
System.out.println(nmap.higherKey(1)); // 3
System.out.println(nmap.lowerEntry(6).getValue()); // Five
NavigableMap<Integer,String> sub = nmap.subMap(2, true, 5, true);
for (Map.Entry<Integer,String> entry : sub.entrySet()) {
System.out.printf("%s => %s%n",
entry.getKey(),
entry.getValue()
);
}
// 3 => Three
// 4 => Four
// 5 => Five
基本Map
操纵:
其他感兴趣的人:
在SortedMap
vs NavigableMap
上: