Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从多个列表中的相等对象聚合列表_Java - Fatal编程技术网

Java 从多个列表中的相等对象聚合列表

Java 从多个列表中的相等对象聚合列表,java,Java,我正在尝试创建一个基于列表池1和列表池2聚合的列表。这里的主要问题显然是性能,因为我们必须将pool1中的每个对象与pool2中的每个对象进行比较。列表是否是最好的选择 上述版本的错误代码: List<Object> pool1 = new ArrayList<>(); List<Object> pool2 = new ArrayList<>(); List<Object> matchingObjects = new ArrayList

我正在尝试创建一个基于列表池1和列表池2聚合的列表。这里的主要问题显然是性能,因为我们必须将pool1中的每个对象与pool2中的每个对象进行比较。列表是否是最好的选择

上述版本的错误代码:

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您已经编辑了答案,你的第一个版本显然是错的