如何查找哪个列表包含特定值

时间:2019-03-21 15:18:56

标签: java

假设我们有一个列表列表,例如:

[3,5],[2,9],[4,1],[8,5]

我想获取包含值5的列表。我知道使用方法contains()将返回true或false,但不会返回包含该值的列表。

该问题的解决方案是什么?

5 个答案:

答案 0 :(得分:0)

你在这里

 list.stream().filter(el -> el.contains(5)).findFirst()

答案 1 :(得分:0)

要返回所有子列表,可以将filtercollect组合在一起:

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();