基于另一个列表的列表中的java筛选器元素
我想在Java 8中实现这一点
我有一个Boolean
列表和另一个Object
列表,这两个列表的大小总是相同的。我想删除object
列表中的所有元素,这些元素在boolean
列表中的相应索引处有false
我将试着用一个例子来解释:
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
中实现这一点
# 1 楼答案
可以使用
IntStream
生成索引,然后filter
获取过滤后的索引,然后mapToObj
获取相应的对象: