public class IDS{
    public String id;
    public long startTime;
    public long endTime;
}

List<IDS> existingIDS = new ArrayList<IDS>();
List<IDS> newIDSToWrite = new ArrayList<IDS>();

我想将newIDSToWrite值与existingIDS值合并,如果发生冲突,newIDSToWrite值优先。
existingIDS的值如下
(id1,4,7) (id2,10,14) (id3,16,21)的值如下
如果上面的newIDSToWrite(id4,1,5) (id5,8,9) (id6,12,15) (id7,18,20)合并,则结果应该类似于newIDSToWrite
做这个最好的方法是什么?

最佳答案

您可以使用以下方法:

existingIDS.retainAll(newIDSToWrite);

链接到doc
更新:
dasblinkenlight的好评论:在类ID中,您应该重写List.retainAll()hash()方法,以便获得正确的行为(使用相同值创建的两个ID应该相等,即使它们不指向堆中的同一个对象)。

10-08 15:55