我知道 ArrayList 提供了在get(position)
位置获取商品的功能,而 LinkedHashTable 提供了排序功能,但无法获得位置的商品。所以,问题:java中的任何泛型集合都具有以下功能:
排序
按位置获取
提供键/值泛型类型。
如果需要通用名称,请给我列出所列功能的代码示例。
答案 0 :(得分:4)
TreeMap和SortedMap都提供:
顺便说一句:
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
}