类似地图的数据结构

时间:2010-07-23 09:37:32

标签: java

是否存在数据结构的映射,其中整数为键,字符串为值,无论插入顺序如何,最后都按键排序,就像插入第一个项{4,somevalue}一样,它将在第四个在进一步的申请流程中使用它时的地方

2 个答案:

答案 0 :(得分:4)

听起来你正在寻找java.util.TreeMap<Integer, String>。它根据密钥对条目进行排序。

答案 1 :(得分:2)

interface SortedMap<K,V>定义了一种具有您正在寻找的行为的类型:

  

Map进一步提供其键的总排序。地图按照其键的自然顺序排序,或通过排序地图创建时通常提供的Comparator排序。迭代有序地图的集合视图(由entrySetkeySetvalues方法返回)时会反映此顺序。

可能感兴趣的SortedMap的特定实现是TreeMap

  

基于Red-Black treeNavigableMap实施。地图根据其键的自然顺序进行排序,或者根据地图创建时提供的Comparator进行排序,具体取决于使用的构造函数。

     

此实施为log(n)containsKeygetput操作提供了有保证的remove时间费用。

请注意interface NavigableMap<K,V> extends SortedMap<K,V>。也就是说,NavigableMapSortedMap,但它还指定了其他方法,例如包罗万象的界限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上: