如果我從同一個集合創建了2個列表,我可以確定我在這兩個列表中獲得了相同的順序嗎? (我不只要兩個列表具有相同的順序,我不會在這兩個列表之間進行上套的任何操作關心的排序。)java中的集合中的元素的順序
List l = new ArrayList(set);
List l1 = new ArrayList(set);
據我所知,有保障的方式創建這些列表並獲得相同的順序,並且我沒有一個很好的理由以這種方式創建兩個列表,但是我想知道爲什麼如果不對其執行任何修改操作,爲什麼集合中元素的排序會發生變化。
編輯:組是無序的HashSet
如果它是一個哈希集,如果它在中間進行了變異,則不會(不保證排序,但不會在沒有修改集的情況下更改)。如果是其他任何東西,排序將被定義,以便您可以基於此進行調整。 – Rogue
這完全取決於實施。我可以想象一個實現,通過遍歷集合會以某種方式改變集合的順序。非常不可能,但可能,並且不能保證它不會發生。 –
編號一個'Set'提供**沒有保證**的迭代順序。甚至不一致。它可以選擇使用你的訪問作爲藉口來整理內部結構,從而改變下一次迭代的順序。 –