LinkedHashMap 中 'accessOrder' 字段的用途是什么?
What is purpose of 'accessOrder' field in LinkedHashMap?
LinkedHashMap.java 使用的字段是:
final boolean accessOrder;
LinkedHashMap 的构造函数是:
public LinkedHashMap(int initialCapacity,
float loadFactor,
boolean accessOrder) {
super(initialCapacity, loadFactor);
this.accessOrder = accessOrder;
}
我想知道字段 accessOrder 的用途。请给出一个例子来区分 accessOrder 是否为 'true 和 'false'。有没有其他方法可以更新已创建对象的 accessOrder 字段?
LinkedHashMap
的条目可以按照键首次添加到 Map 的顺序(这是默认行为)或根据访问顺序(即最近访问的条目将是迭代了最后一个条目)。
通过将 true
传递给该构造函数中的 accessOrder
参数,您是说您希望根据访问顺序(而不是插入顺序)迭代条目。
Map<Integer,String> insertOrder = new LinkedHashMap<>(16,0.75f,false);
Map<Integer,String> accessOrder = new LinkedHashMap<>(16,0.75f,true);
insertOrder.put (1,"a");
insertOrder.put (3,"c");
insertOrder.put (2,"b");
String v = insertOrder.get(3);
accessOrder.put (1,"a");
accessOrder.put (3,"c");
accessOrder.put (2,"b");
v = accessOrder.get(3);
System.out.println(insertOrder);
System.out.println(accessOrder);
输出:
{1=a, 3=c, 2=b} // the last inserted key (2) is last
{1=a, 2=b, 3=c} // the most recently accessed key (3) is last
创建访问有序LinkedHashMap的构造函数如下:
LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder)
构造一个具有指定初始容量、加载因子和访问顺序的空 LinkedHashMap 实例。
如果 accessOrder 为 false,则将导致插入顺序。
如果accessOrder为真,那么它会产生访问顺序。访问顺序LinkedHashMap的一个重要应用就是构建LRU缓存。
LinkedHashMap.java 使用的字段是:
final boolean accessOrder;
LinkedHashMap 的构造函数是:
public LinkedHashMap(int initialCapacity,
float loadFactor,
boolean accessOrder) {
super(initialCapacity, loadFactor);
this.accessOrder = accessOrder;
}
我想知道字段 accessOrder 的用途。请给出一个例子来区分 accessOrder 是否为 'true 和 'false'。有没有其他方法可以更新已创建对象的 accessOrder 字段?
LinkedHashMap
的条目可以按照键首次添加到 Map 的顺序(这是默认行为)或根据访问顺序(即最近访问的条目将是迭代了最后一个条目)。
通过将 true
传递给该构造函数中的 accessOrder
参数,您是说您希望根据访问顺序(而不是插入顺序)迭代条目。
Map<Integer,String> insertOrder = new LinkedHashMap<>(16,0.75f,false);
Map<Integer,String> accessOrder = new LinkedHashMap<>(16,0.75f,true);
insertOrder.put (1,"a");
insertOrder.put (3,"c");
insertOrder.put (2,"b");
String v = insertOrder.get(3);
accessOrder.put (1,"a");
accessOrder.put (3,"c");
accessOrder.put (2,"b");
v = accessOrder.get(3);
System.out.println(insertOrder);
System.out.println(accessOrder);
输出:
{1=a, 3=c, 2=b} // the last inserted key (2) is last
{1=a, 2=b, 3=c} // the most recently accessed key (3) is last
创建访问有序LinkedHashMap的构造函数如下:
LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder)
构造一个具有指定初始容量、加载因子和访问顺序的空 LinkedHashMap 实例。
如果 accessOrder 为 false,则将导致插入顺序。
如果accessOrder为真,那么它会产生访问顺序。访问顺序LinkedHashMap的一个重要应用就是构建LRU缓存。