在Java中,通过支持HashSet创建LinkedHashSet,并使用以下LinkedHashMap构造函数创建LinkedHashMap
map = new LinkedHashMap<>(initialCapacity, loadFactor);
现在在LinkedHashMap中,上述构造函数依次调用
public LinkedHashMap(int initialCapacity, float loadFactor) {
super(initialCapacity, loadFactor);
accessOrder = false;
}
所以有什么办法可以将
accessOrder
设置为true
的LinkedHashSet吗?这可以帮助使用LinkedHashSet创建LRU缓存实现。
最佳答案
LinkedHashSet
不支持访问顺序,因为您没有访问LinkedHashSet
的元素。
您可以将元素添加到LinkedHashSet
,然后可以按插入顺序对其进行迭代。
当您检查元素是否是LinkedHashSet
的成员时,您没有访问它。您可以通过boolean contains(Object o)
检查成员资格,并调用map.containsKey(o)
作为背景图。但是,containsKey()
不会影响Map
的访问顺序。
另一方面,get(Object key)
的LinkedHashMap
方法确实会影响访问顺序,但LinkedHashSet
从未使用过。
关于java - 为什么LinkedHashSet的 boolean accessOrder设置为false,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47696936/