我想在Java 8
我有一个Boolean
清单和另一个Object
列表,这两个列表的大小始终相同。我想从中删除所有元素object
列表,其中有false
在相应的索引处boolean
list.
我将尝试用一个例子来解释:
objectList = {obj1,obj2,obj3,obj4,obj5};
booleanList = {TRUE,FALSE,TRUE,TRUE,FALSE};
所以从这些列表中,我想改变objectList
to
{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
用更少的代码?
您可以使用IntStream
生成索引,然后filter
获取过滤后的索引和mapToObj
获取相应的对象:
List<Object> newlist =
IntStream.range(0,objectList.size())
.filter(i -> booleanList.get(i))
.mapToObj(i -> objectList.get(i))
.collect(Collectors.toList());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)