Java 从多个列表中的相等对象聚合列表
我正在尝试创建一个基于列表池1和列表池2聚合的列表。这里的主要问题显然是性能,因为我们必须将pool1中的每个对象与pool2中的每个对象进行比较。列表是否是最好的选择 上述版本的错误代码:Java 从多个列表中的相等对象聚合列表,java,Java,我正在尝试创建一个基于列表池1和列表池2聚合的列表。这里的主要问题显然是性能,因为我们必须将pool1中的每个对象与pool2中的每个对象进行比较。列表是否是最好的选择 上述版本的错误代码: List<Object> pool1 = new ArrayList<>(); List<Object> pool2 = new ArrayList<>(); List<Object> matchingObjects = new ArrayList
List<Object> pool1 = new ArrayList<>();
List<Object> pool2 = new ArrayList<>();
List<Object> matchingObjects = new ArrayList<Object>();
for (Object p1 : pool1) {
for (Object p2 : pool2) {
if (p1.equals(p2)) {
matchingObjects.add(p1);
}
}
}
retainAll将给出两个列表之间的公共元素
pool1.retainAll(pool2);
//pool1 contains elements common between two lists
如果您想要一个通用元素的saparate列表,请遵循以下过程
List<Object> matchingObjects = (ArrayList<Object>)pool1.clone();
matchingObjects.retainAll(pool2); // now matchingObjects will contain all the common elements
使用集合。retainAll将为您完成这项工作。list1.RetainAllist2将工作,我认为可能会工作,但它并不等同于问题中发布的代码。Retainal将修改列表1。我得到不兼容的类型:boolean无法转换为列表?@Noobcanon从列表更改为列表或使用这是错误的建议Retainal返回一个布尔值,而不是一个新列表。@Noobcanon两个列表中包含的对象是什么类型的布尔值,而不是将其从更改为@BhargavModi您已经编辑了答案,你的第一个版本显然是错的