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应该相等,即使它们不指向堆中的同一个对象)。