是不是某种可能性得到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