以某种方式可以使用原始List中的元素获取List
的已排序List
视图,修改元素,例如设置属性,但原始List应反映更改?
背景是我正在排序两个列表,然后对于每个相等的元素我设置一个属性(基本上它是交集)但最后我需要带有修改元素的未排序列表。
亲切的问候,答案 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