在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/

10-08 23:59