實際上有一個從由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
,你將需要使用此工廠方法從java.util.Collections
:newSetFromMap(LinkedHashMap(initialCapacity, loadFactor, accessOrder))
記住該accessOrder
財產負責給定元素的所有互動 - 如果你'd請致電get
HashMap
它也會進行重新排序(因爲Set
接口不會在包裝的HashMap
上顯示get
方法,所以不應該影響您)。
什麼是預期的行爲?這不允許重複。 – m0skit0
你爲什麼期望輸出是'[b,c,a]'? LinkedHashSet維護插入順序,從而維護輸出。 –
我想操作者想要最後的插入順序(如果一個鍵被重新插入,它的位置應該改變到一個新的位置)。 – assylias