Java 检查两个列表中的元素
我有两个ArrayList,一个包含id号(1000或更多),另一个对象中可能包含(一个或多个)或不包含来自另一个ArrayList的idJava 检查两个列表中的元素,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
使用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”),那么
集
(例如哈希集
)可能是更好的选择。