将项添加到LinkedHashMap的顶部

时间:2014-12-07 22:52:39

标签: java

我在我的代码中使用LinkedHashMap。这是我的地图:

LinkedHashMap<String, Conversation> conversationsMap=new LinkedHashMap<String, Conversation>();

我正在使用以下行向此地图添加项目:

conversationsMap.put("test",Conversation);

但是这一行将项目添加到最后。我需要将此项目添加到此地图的顶部。我该怎么做?

3 个答案:

答案 0 :(得分:1)

链接哈希映射的目的是保留添加的订单项,以及它最后的原因。

您可以使用新项目创建新的链接哈希映射,并在末尾添加所有其他哈希映射。

我无法在API文档中看到以任何其他方式执行此操作的任何方法。

答案 1 :(得分:1)

LinkedHashMap保留了插入顺序。要首先添加它,您需要遍历旧地图并在新地图中插入值。

答案 2 :(得分:0)

我认为标准JDK不提供这样做的方法。基本上LinkedHashMap保留了插入顺序,在新地图中添加新条目,然后旧地图中的其他条目效率低下,因为每次要添加时,您都必须遍历旧地图的所有条目。新的键值对。

一种解决方法是创建自己的pojo并使用LinkedList<MyData>方法addFirst。如果您需要单独使用密钥,则可以并行Set<String>来检查此约束。

class MyData {
     private final String key;
     private final Conversation value;
     //constructor, getter, hashcode, equals
}

否则Apache Commons Collections中有一个ListOrderedMap,它提供put(int index, K key, V value)方法(从未测试过),但它应该可以解决问题。