我想在 Java 8
中执行此操作我有一个Boolean
列表和另一个Object
列表,这两个列表的大小始终相同。我想删除object
列表中的所有元素,这些元素在false
列表中的相应索引处有boolean
。
我将尝试用一个例子来解释:
objectList = {obj1,obj2,obj3,obj4,obj5};
booleanList = {TRUE,FALSE,TRUE,TRUE,FALSE};
因此,从这些列表中,我想将objectList
更改为
{obj1,obj3,obj4}// obj2 and obj5 are removed because corresponding indices are `FALSE` in `booleanList`.
如果我在Java 7
中执行此操作,我会执行以下操作:
List<Object> newlist = new ArrayList<>();
for(int i=0;i<booleanList.size();i++){
if(booleanList.get(i)){
newList.add(objectList.get(i));
}
}
return newList;
有没有办法在代码较少的Java 8
中执行此操作?
答案 0 :(得分:4)
您可以使用IntStream
生成索引,然后使用filter
获取已过滤的索引,使用mapToObj
获取相应的对象:
List<Object> newlist =
IntStream.range(0,objectList.size())
.filter(i -> booleanList.get(i))
.mapToObj(i -> objectList.get(i))
.collect(Collectors.toList());