我在我的代码中使用LinkedHashMap。这是我的地图:
LinkedHashMap<String, Conversation> conversationsMap=new LinkedHashMap<String, Conversation>();
我正在使用以下行向此地图添加项目:
conversationsMap.put("test",Conversation);
但是这一行将项目添加到最后。我需要将此项目添加到此地图的顶部。我该怎么做?
答案 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)
方法(从未测试过),但它应该可以解决问题。