my *_*YAN 7 java collections linkedhashmap
LinkedHashMap.java使用了一个字段:
final boolean accessOrder;
Run Code Online (Sandbox Code Playgroud)
LinkedHashMap的构造函数是:
public LinkedHashMap(int initialCapacity,
float loadFactor,
boolean accessOrder) {
super(initialCapacity, loadFactor);
this.accessOrder = accessOrder;
}
Run Code Online (Sandbox Code Playgroud)
我想知道accessOrder字段的用途.请举例说明accessOrder是'true和'false'.有没有其他方法来更新已创建对象的accessOrder字段?
a的条目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);
Run Code Online (Sandbox Code Playgroud)
输出:
{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
Run Code Online (Sandbox Code Playgroud)