2011-09-25 129 views
1

是不是某種可能性得到List視圖List與原始列表中的元素,修改元素,例如設置屬性,但原始列表應該反映更改?排序的列表視圖

背景是我正在排序兩個列表,然後對於每個相等的元素我設置一個屬性(基本上是交集),但最後我需要與修改元素的未排序列表。

親切的問候,
約翰內斯

回答

1

可能是最簡單的做法是元素添加到一個新的列表,那種列表,當你修改的元素,原有元素仍將被修改......

List<?> origA; 
List<?> origB; 

List<?> newA = new ArrayList<?>(origA); 
List<?> newB = new ArrayList<?>(origB); 

Collections.sort(newA); 
Collections.sort(newB); 

// do mods 
+0

是的,很顯然這是正確的。 ..我的大腦肯定已經很短時間了,因爲它遲到或類似的東西;-) – Johannes

1

如果List持有的對象(不是原始數據類型)的引用,然後剛纔複製的列表,排序,並修改的元素。

1

它是否必須是一個列表?如果將元素保留在TreeSet中,即使在添加/刪除元素後,它們也會在遍歷它們時始終進行排序。請記住,修改已在TreeSet中的元素可能會破壞排序順序。您可以移除該元素並將其添加到TreeSet以解決該問題。

如果您必須使用列表,則可以在添加或修改元素後使用Collections.sort(List list)。當然,如果你不得不經常打電話,會有性能問題。如果性能是一個問題,您可以插入新元素(或移動修改的元素)以維護排序順序,這將比分類排序更便宜:O(n)vs O(n * log(n))