有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

列出Java stream findany所需的帮助

我有一个包含客户的对象。名称属性。我想反复浏览一下客户名单,看看他们的名字是不是“乔”还是“鲍勃”

我如何使用Java stream/find any来识别这些名字中是否有“Joe”或“Bob”呢

 boolean nameCheck = customers.stream().anyMatch(!c -> c.getName().equals("Joe") ||  !c.getName().equals("Bob"))

基本上,我想找到最好的方法返回一个布尔值,告诉我所有的客户都叫Joe或Bob。非常感谢您的帮助


共 (1) 个答案

  1. # 1 楼答案

    试试.allMatch(p-> p.getName().matches("Joe|Bob"))

        public class Main {
        public static void main(String[] args) {
            ArrayList<Customer> customers =   new ArrayList<>(asList(new Customer("Joe"), new Customer("Bob")));
    
            customers.stream().map(Customer::getName).forEach(System.out::println);//print list
            Boolean allCustomersAreJoeOrBob =  customers.stream().allMatch(p-> p.getName().matches("Joe|Bob"));
            System.out.println("allCustomersAreJoeOrBob: "+allCustomersAreJoeOrBob+"\n");
    
            Customer sarasa = new Customer("Sarasa");
            customers.add(sarasa);
            customers.stream().map(Customer::getName).forEach(System.out::println);//print list
            allCustomersAreJoeOrBob =  customers.stream().allMatch(p-> p.getName().matches("Joe|Bob"));
            System.out.println("allCustomersAreJoeOrBob: "+allCustomersAreJoeOrBob+"\n");
    
            customers.remove(sarasa);
            customers.add(new Customer("Joe"));
            customers.stream().map(Customer::getName).forEach(System.out::println);//print list
            allCustomersAreJoeOrBob =  customers.stream().allMatch(p-> p.getName().matches("Joe|Bob"));
            System.out.println("allCustomersAreJoeOrBob: "+allCustomersAreJoeOrBob+"\n");
        }
    }
    

    结果:

    Joe
    Bob
    allCustomersAreJoeOrBob: true
    
    Joe
    Bob
    Sarasa
    allCustomersAreJoeOrBob: false
    
    Joe
    Bob
    Joe
    allCustomersAreJoeOrBob: true