Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays - Fatal编程技术网

Java 检查两个列表中的元素

Java 检查两个列表中的元素,java,arrays,Java,Arrays,我有两个ArrayList,一个包含id号(1000或更多),另一个对象中可能包含(一个或多个)或不包含来自另一个ArrayList的id 使用Java检查此问题的最佳方法是什么?使用流的建议解决方案,可能有用: class Thing{ public int id; public Thing( int id ){ this.id = id;} public String toString() { return ""+id; } } List<Integer> ids

我有两个ArrayList,一个包含id号(1000或更多),另一个对象中可能包含(一个或多个)或不包含来自另一个ArrayList的id


使用Java检查此问题的最佳方法是什么?

使用流的建议解决方案,可能有用:

class Thing{
  public int id;
  public Thing( int id ){ this.id = id;}
  public String toString() { return ""+id; }
}

List<Integer> ids = new ArrayList<Integer>();
List<Thing> things = new ArrayList<Thing>();

ids.add(1);
ids.add(2);
ids.add(3);
ids.add(4);

things.add( new Thing( 2 ) );
things.add( new Thing( 3 ) );

List<Thing> intersection = ids.stream().flatMap( id -> things.stream().filter(
 thing -> id == thing.id
).map(
 thing -> thing
)).collect(Collectors.toList());
类的东西{
公共int id;
公共事物(intid){this.id=id;}
公共字符串toString(){return”“+id;}
}
列表ID=新的ArrayList();
List things=new ArrayList();
添加(1);
添加(2);
添加(3);
添加(4);
添加(新事物(2));
添加(新事物(3));
List intersection=ids.stream().flatMap(id->things.stream().filter(
thing->id==thing.id
).地图(
东西->东西
)).collect(Collectors.toList());
现在,
交叉点
列表只包含第2项和第3项


另外,如果需要,您可以并行处理。请参见

您要查找的是两个列表的交集。您是否检查了ID是否唯一(我假设它们被称为“ID”),那么
(例如
哈希集
)可能是更好的选择。