假设我们有一个列表列表,例如:
[3,5],[2,9],[4,1],[8,5]
我想获取包含值5的列表。我知道使用方法contains()
将返回true或false,但不会返回包含该值的列表。
该问题的解决方案是什么?
答案 0 :(得分:0)
你在这里
list.stream().filter(el -> el.contains(5)).findFirst()
答案 1 :(得分:0)
要返回所有子列表,可以将filter
与collect
组合在一起:
List<List<Integer>> listsWith5 = list.stream()
.filter(sub -> sub.contains(5))
.collect(Collectors.toList());
答案 2 :(得分:0)
List<List<Integer>> listOfLists = new ArrayList<>();
listOfLists.add(Arrays.asList(3, 5));
listOfLists.add(Arrays.asList(2, 9));
listOfLists.add(Arrays.asList(4, 1));
listOfLists.add(Arrays.asList(8, 5));
List<List<Integer>> listOfListsContaingValue = listOfLists.stream().filter(p ->
p.contains(5)).collect(Collectors.toList());
答案 3 :(得分:0)
您可以只使用一个循环,而无需“花哨的”流:
List<Integer> targets = new ArrayList<>();
for(List<Integer> subList : lists) {
if(subList.contains(5)) {
targets.add(subList);
}
}
答案 4 :(得分:-1)
如果您需要原始列表中包含5的列表的索引:
int[] indicesOfInnerListsWith5 = IntStream.range(0, myList.size()).
filter(i->myList.get(i).contains(5)).toArray();