根据另一个列表从列表中过滤元素
我想在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 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