Java 列表的排序视图

Java 列表的排序视图,java,list,sorting,Java,List,Sorting,是否有可能通过原始列表中的元素获得排序的列表视图,修改元素,例如设置属性,但原始列表应反映更改 背景是我对两个列表进行排序,然后为每个相等的元素设置一个属性(基本上是交集),但最后我需要包含修改元素的未排序列表 亲切的问候, Johannes如果列表包含对对象(而非原始数据类型)的引用,则只需复制列表,对其排序并修改元素。它必须是列表吗?如果将元素保留在树集中,则在迭代时,即使在添加/删除元素之后,它们也将始终被排序。但是请记住,修改树集合中已有的元素可能会破坏排序顺序。您可以删除该元素并将其添

是否有可能通过原始列表中的元素获得排序的
列表
视图,修改元素,例如设置属性,但原始列表应反映更改

背景是我对两个列表进行排序,然后为每个相等的元素设置一个属性(基本上是交集),但最后我需要包含修改元素的未排序列表

亲切的问候,

Johannes

如果
列表
包含对对象(而非原始数据类型)的引用,则只需复制列表,对其排序并修改元素。

它必须是列表吗?如果将元素保留在
树集中,则在迭代时,即使在添加/删除元素之后,它们也将始终被排序。但是请记住,修改
树集合中已有的元素可能会破坏排序顺序。您可以删除该元素并将其添加到
树集
,以绕过该问题


如果必须使用列表,可以在添加或修改元素后使用
Collections.sort(list list)
。当然,如果你必须经常打电话,就会对性能造成影响。如果性能是一个问题,您可以插入新元素(或移动修改后的元素)以保持排序顺序,这将比排序更便宜:O(n)vs O(n*log(n))

可能最简单的方法是将元素添加到新列表中,对该列表进行排序,然后在修改元素时,原始元素仍将被修改

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

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

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

// do mods
List-origA;
列出origB;
List newA=新阵列列表(origA);
List NEB=新阵列列表(origB);
Collections.sort(newA);
集合。排序(newB);
//做mods

是的,显然是这样。。。我的脑子一定是坏了一段时间了,因为太晚了,或者诸如此类;-)