我知道java中的List是保證維護訂單,但Collection不是。Java列表和收集訂購查詢
我的問題是,如果我有一個列表1,我是列表1分配給一個集合,然後我投的是收集到一個List列表2,將列表2具有相同的順序列表1?
或者,它可能會失去訂單,因爲它是在habdled爲收集一些呢?
謝謝大家的幫助。
我知道java中的List是保證維護訂單,但Collection不是。Java列表和收集訂購查詢
我的問題是,如果我有一個列表1,我是列表1分配給一個集合,然後我投的是收集到一個List列表2,將列表2具有相同的順序列表1?
或者,它可能會失去訂單,因爲它是在habdled爲收集一些呢?
謝謝大家的幫助。
順序將是不變的,因爲你總是處理,以不更改List實例任何初始列表的引用。
如果您的列表添加到其設置是不同的。這將取決於您使用的Set,更改順序。
更改引用類型不影響對象。
你是兩個概念混淆:
換句話說;當然,編譯器讓你寫:
List<Whatever> stuff = new ArrayList<>();
stuff.add(whatever);
Collection<Whatever> stuffInCollection = stuff;
Object loosingAllTypeInformation = stuffInCollection;
List<Whatever> castingBack = (List<Whatever>) loosingAllTypeInformation;
但在運行時,所有這些任務都在內存中列表對象任何影響。它仍然在那裏,它仍然是一個ArrayList對象;它有一個Whatever類型的成員。換句話說:創建多個引用同一對象的變量/字段沒有任何(直接)對引用對象的影響;不管是什麼樣的對象。
有多個變量時可能會更改的唯一/場時引用該對象有資格被垃圾收集同一個對象可能的時間點。
來回施放引用不會與底層對象交互。 –
你爲什麼不試試看? :) –
'List' *是*集合'。將List引用賦給一個超類型變量不會改變* object *本身,只是*編譯器*所看到的類型。 – Andreas