通过查看Sun的LinkedHashMaps的源代码,我看到有一个名为KeyIterator的私有类,我想使用它.我怎样才能获得访问权限?
可能重复:
以相反的顺序迭代LinkedHashMap
如何以相反的顺序遍历链接的哈希映射?地图中是否有任何预定义方法可以做到这一点?
我正在创建它如下:
LinkedHashMap<Integer, String> map = new LinkedHashMap<Integer,String>();
map.put(1, "one");
map.put(2, "two");
map.put(3, "three");
Run Code Online (Sandbox Code Playgroud) 来自Javadoc:
Hash table and linked list implementation of the Map interface, with predictable iteration order. This implementation differs from HashMap in that it maintains a doubly-linked list running through all of its entries.
如果是这样,那么为什么它不提供像java中的List那样的对象访问,list.get(index);
UPDATE
我使用LinkedHashMap实现了LRU Cache.我的算法要求我从缓存中访问LRU对象.这就是我需要随机访问的原因,但我认为这会让我失去性能,所以我改变了逻辑,我正在访问LRU对象就在Cache已满时...使用removeEldestEntry()
谢谢你们...
LinkedHashMap是LIFO还是FIFO的性质?如果我的地图是形式 - >
map.put(1,"one");
map.put(2,"two");
Run Code Online (Sandbox Code Playgroud)
如果我要使用keyset在地图上迭代,那将是什么命令?
编辑:我认为我确实混淆了两个不同的概念.我重新解释了这个问题.我使用entryset遇到数量的顺序是什么?感谢指出btw.i donot打算删除任何条目.
我正在使用链接的hashmap.我将始终处理第一个值并且可以删除(如果可能),以便在下一次迭代期间,我将再次从地图中获取相同的第一个值来处理.我可以用什么来获得第一个值.
我有一个Java程序,我想将其转换为C++.因此,LinkedhashmapJava代码中使用了一种数据结构,我想将其转换为C++.LinkedHashmapC++中是否有等效的数据类型?
我尝试使用std::unordered_map它,但它不保持插入的顺序.
我需要按类型将数据列表分成不同的列表,为此我使用构造
Map<String,List<Dish>> dishMap = menu.stream()
.collect(Collectors.groupingBy(Dish::getType));
Run Code Online (Sandbox Code Playgroud)
但是如何从方法"Collectors.groupingBy"获取LinkedHashMap而不是HashMap.我在javadoc中找到了一些数据但是我不能得到我必须用这个方法做的事情:
Map<String,List<Dish>> dishMap = menu.stream().collect(Collectors.groupingBy(
Dish::getType,
LinkedHashMap::new, ????));
Run Code Online (Sandbox Code Playgroud)
我应该在方法"groupingBy"的第三个参数中放置什么才能得到我需要的东西?
查看LinkedHashMap的JDK源代码,我注意到这个类被声明为:
public class LinkedHashMap<K,V>
extends HashMap<K,V>
implements Map<K,V>
{...
Run Code Online (Sandbox Code Playgroud)
为什么冗余的" implements Map<K,V>"(因为HashMap已经实现了Map)?我无法想象这是一个错字......
谢谢.
我正在使用Jongo与Mongo合作,当我进行查询时,我收到了LinkedHashMap作为结果.
Iterator one = (Iterator) friends.find(query).projection("{_id:0}").as(Object.class);
while (one.hasNext()) {
LinkedHashMap data= new LinkedHashMap();
data= (LinkedHashMap) one.next();
String content=data.toString();
}
Run Code Online (Sandbox Code Playgroud)
问题是如果json是{"user":"something"}内容将是{user = something},那么json只是来自HashMap的toString方法.
我怎么能得到原始的JSON?
我没有一个类映射响应,它不是一个解决方案创建一个map类,这就是我使用Object.class的原因.
我该如何转换:
return this.subjects.entrySet()
.stream()
.collect(Collectors.toMap(e -> getArtistryCopy(e.getKey()), Map.Entry::getValue));
Run Code Online (Sandbox Code Playgroud)
要返回 LinkedHashMap 而不是地图?
如果您需要知道,this.subjects是一个LinkedHashMap<AbstractArtistries, ArrayList<AbstractCommand>>. AbstractArtistry 和 command 是我制作的两个自定义对象。我需要维持秩序。
getArtistryCopy() 返回 AbstractArtistry 的副本(这是关键)。
linkedhashmap ×10
java ×9
collections ×2
collectors ×2
c++ ×1
fifo ×1
grouping ×1
iterator ×1
java-8 ×1
json ×1
mongodb ×1
reverse ×1