我有两个List
类文章
public class Article{
int id;
String name;
// get
// set
}
列出一个:
List<Article> mListInfor have
id = 1, 2 , 3, 4, 5
name = "A", "B", "C", "D", "E"
清单二:
List<Article> mListNews have
id = 1, 2, 3, 4, 5, 6, 7, 8
name = "A", "B", "C", "D", "E", "F", "G", "H"
结果:
List<Article> mListDiffrent have
id = 6,7,8
name = "F","G","H"
如何从这两个arraylists中获得不同的值:列出mListInfor和List mListNews?
请。救救我!
答案 0 :(得分:2)
您应该覆盖类中的Equals
方法,然后使用一些内置方法。例如
public class Article{
int id;
String name;
// get
// set
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Article))
return false;
if (obj == this)
return true;
return this.id == obj.id;
}
}
List<Article> differences = new ArrayList<>();
differences.addAll(mListInfor)
differences.removeAll(mListNews)
根据您对removeAll的调用顺序,结果可能会受到影响。但是,在apache commons(CollectionUtils
)中有一个已经构建的功能,这将使您不必担心。
CollectionUtils.intersection(mListInfor, mListNews);
答案 1 :(得分:-1)
@rafael在上面的答案中给出的解决方案是使用内置功能的好解决方案。
您还可以创建一个函数,您可以通过使用比较器实现或甚至等于比较来单独遍历文章丢失和隔离的每个元素。
另外,不要忘记在Java 8中探索流。在流api中必须有很好的选择。