如何使用Java8的stream操作如下数据

假如一个list集合是list1:{"12345","4567","5879"},另一个list2:{"9","4"}
要求list1里面每一个元素如何包含list2里面的任何一个元素,则返回true,如果list1里面有元素不含list2中任何一个则返回fasle,如何使用stream来完成


    public static void main(String[] args) {
        List<String> list1 = new ArrayList<>();
        list1.add("12345");
        list1.add("4567");
        list1.add("5879");
        List<String> list2 = new ArrayList<>();
        list2.add("9");
        list2.add("4");
        boolean b = list1.stream().allMatch(item -> list2.stream().anyMatch(item::contains));
        System.out.println(b);
    }

采纳下吧

除了stream也可以使用其他方法

System.out.println(list1.stream().filter(x-> list2.stream().filter(y->x.contains(y)).count()<=0 ).count()<=0);


list1.stream().allMatch(item-> list2.stream().anyMatch(item::contains))
List<String> list1 = new ArrayList<>(Arrays.asList(new String[]{"12345","4567","5879"}));
       List<String> list2 = new ArrayList<>(Arrays.asList(new String[]{"9","4"}));
       //方法1
        boolean b = list1.stream().allMatch(v -> !list2.stream().allMatch(v::contains));
        System.out.println(b);
        //方法二
        boolean present = list1.parallelStream().filter(v ->  {
            for (String s : list2) {
                if(!v.contains(s))  return true;
            }
            return false;
        }).findAny().isPresent();
        System.out.println(present);

方法1里面注意里面 取反