实际上,JDK 库提供了一个开箱即用的数据结构。如果您查看此LinkedHashMap
构造函数:
/**
* Constructs an empty <tt>LinkedHashMap</tt> instance with the
* specified initial capacity, load factor and ordering mode.
*
* @param initialCapacity the initial capacity
* @param loadFactor the load factor
* @param accessOrder the ordering mode - <tt>true</tt> for
* access-order, <tt>false</tt> for insertion-order
* @throws IllegalArgumentException if the initial capacity is negative
* or the load factor is nonpositive
*/
public LinkedHashMap(int initialCapacity,
float loadFactor,
boolean accessOrder) {
super(initialCapacity, loadFactor);
this.accessOrder = accessOrder;
}
有一个额外的参数accessOrder
。基于此,新添加的对象将被移动到列表的末尾 ( accessOrder - true
) 或保留在旧位置 ( accessOrder - false
)。
为了创建Set
具有这些特性的 a,您需要使用以下工厂方法java.util.Collections
:newSetFromMap(LinkedHashMap(initialCapacity, loadFactor, accessOrder))
请记住,该accessOrder
属性负责与给定元素的所有交互 - 如果您调用它get
,HashMap
它也会重新排序(无论如何这不应该影响您,因为Set
接口不会get
在 Wrapped 上公开方法HashMap
,只是说) .