列表的排序视图

时间:2011-09-25 00:15:48

标签: java list sorting

以某种方式可以使用原始List中的元素获取List的已排序List视图,修改元素,例如设置属性,但原始List应反映更改?

背景是我正在排序两个列表,然后对于每个相等的元素我设置一个属性(基本上它是交集)但最后我需要带有修改元素的未排序列表。

亲切的问候,
约翰内斯

3 个答案:

答案 0 :(得分:1)

如果List保存对象(不是原始数据类型)的引用,则只需复制列表,对其进行排序并修改元素。

答案 1 :(得分:1)

它必须是一个列表吗?如果将元素保留在TreeSet中,即使在添加/删除元素之后,它们也会在迭代它们时进行排序。请记住,修改TreeSet中已有的元素可能会破坏排序顺序。您可以删除元素并将其添加到TreeSet以解决此问题。

如果必须使用列表,则可以在添加或修改元素后使用Collections.sort(List list)。当然,如果你经常打电话,会有性能受到打击。如果性能是一个问题,你可以插入新元素(或移动修改后的元素)来维护排序顺序,这比排序要便宜:O(n)vs O(n * log(n))

答案 2 :(得分:1)

最简单的事情可能是将元素添加到新列表,对列表进行排序,修改元素时,原始元素仍然会被修改......

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

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

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

// do mods