通用集合<k,v>,具有能力排序和按位置获取</k,v>

时间:2012-11-23 05:39:23

标签: java android generics dictionary

我知道 ArrayList 提供了在get(position)位置获取商品的功能,而 LinkedHashTable 提供了排序功能,但无法获得位置的商品。所以,问题:java中的任何泛型集合都具有以下功能:

  • 排序

  • 按位置获取

  • 提供键/值泛型类型。

如果需要通用名称,请给我列出所列功能的代码示例。

2 个答案:

答案 0 :(得分:4)

您在寻找TreeMap还是SortedMap ??

TreeMap和SortedMap都提供:

  1. 提供关键元素的自然排序。
  2. 是键/值对
  3. 获取基于Key的值。
  4. 顺便说一句:

    LinkedHashMap 只维护一个插入订单,它没有排序,它只是一个订单

答案 1 :(得分:2)

我为之前过于复杂的事情而道歉!

使用TreeMap。什么时候想要

get(position)

只需执行以下操作:

K key = treemap.getKeys().get(position)
V value = treemap.get(key);

==========================

我以前的复杂错误答案:

您可以使用ArrayList<Pair<K implements Comparable,V>>Pair<K,V>上实施可比性,而K已实施可比较。然后你可以在Arraylist上使用Collections.sort(List<Pair<K,V>)

然后你将维护一个HashMap<K,V>,以便你可以通过K检索元素。这意味着你必须记住更新这两个数据结构。这意味着O(N)添加一个元素:(。另外,为了简化逻辑,你可以将HashMap和ArrayList包装在一个对象中。

public class Pair<K extends  Comparable<K>, V> implements Comparable {

    private final K first;

    private final V second;

    public Pair(K first, V second) {
        this.first = first;
        this.second = second;
    }

    public K getFirst() {
        return first;
    }

    public V getSecond() {
        return second;
    }

    public int compareTo(K other) ; // TODO
}