是不是某種可能性得到List
視圖List
與原始列表中的元素,修改元素,例如設置屬性,但原始列表應該反映更改?排序的列表視圖
背景是我正在排序兩個列表,然後對於每個相等的元素我設置一個屬性(基本上是交集),但最後我需要與修改元素的未排序列表。
親切的問候,
約翰內斯
是不是某種可能性得到List
視圖List
與原始列表中的元素,修改元素,例如設置屬性,但原始列表應該反映更改?排序的列表視圖
背景是我正在排序兩個列表,然後對於每個相等的元素我設置一個屬性(基本上是交集),但最後我需要與修改元素的未排序列表。
親切的問候,
約翰內斯
可能是最簡單的做法是元素添加到一個新的列表,那種列表,當你修改的元素,原有元素仍將被修改......
List<?> origA;
List<?> origB;
List<?> newA = new ArrayList<?>(origA);
List<?> newB = new ArrayList<?>(origB);
Collections.sort(newA);
Collections.sort(newB);
// do mods
如果List
持有的對象(不是原始數據類型)的引用,然後剛纔複製的列表,排序,並修改的元素。
它是否必須是一個列表?如果將元素保留在TreeSet
中,即使在添加/刪除元素後,它們也會在遍歷它們時始終進行排序。請記住,修改已在TreeSet
中的元素可能會破壞排序順序。您可以移除該元素並將其添加到TreeSet
以解決該問題。
如果您必須使用列表,則可以在添加或修改元素後使用Collections.sort(List list)
。當然,如果你不得不經常打電話,會有性能問題。如果性能是一個問題,您可以插入新元素(或移動修改的元素)以維護排序順序,這將比分類排序更便宜:O(n)vs O(n * log(n))
是的,很顯然這是正確的。 ..我的大腦肯定已經很短時間了,因爲它遲到或類似的東西;-) – Johannes