为什么LinkedHashSet将boolean accessOrder设置为false

Jyo*_*rup 6 java collections linkedhashset

在Java中,LinkedHashSet是使用支持HashSet创建的,使用以下LinkedHashMap构造函数创建LinkedHashMap

map = new LinkedHashMap<>(initialCapacity, loadFactor);
Run Code Online (Sandbox Code Playgroud)

现在在LinkedHashMap中,上面的构造函数依次调用

 public LinkedHashMap(int initialCapacity, float loadFactor) {
    super(initialCapacity, loadFactor);
    accessOrder = false;
}
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以将LinkedHashSet accessOrder设置为true?这可以帮助使用LinkedHashSet创建LRU缓存实现.

Dse*_*se1 1

从源代码中可以看到,LinkedHashSet 由 LinkedHashMap 支持,且 accessOrder 设置为 false。

此外,LinkedHashSet 没有公共构造函数来将访问顺序从插入顺序更改为访问顺序。

你可以尝试这个(只是一个例子):

LinkedHashSet<E> set = (LinkedHashSet<E>) Collections.newSetFromMap(new LinkedHashMap<>(16, 0.75f, true));
Run Code Online (Sandbox Code Playgroud)