代码之家  ›  专栏  ›  技术社区  ›  Genaut

了解具有1个以上参数的简单lambda

  •  1
  • Genaut  · 技术社区  · 7 年前

    () -> true
    a -> a.startWith("test")
    (String a) -> a.startWith("test")
    (a,b) -> a.startWith("test")
    (String a, String b) -> a.startWith("test")
    

    好的,我阅读了关于谓词接口的内容,并尝试用一个简单的字符串列表制作一些小示例。一切都很好,但我不能理解这一点。

    public class LambdaTests {
        public static void main(String...strings){
    
            List<String> al = new ArrayList<>();
            al.add("Hola");
            al.add("Que");
            al.add("Tal");
            al.add("Estas");
            al.add("Hoy");
            al.add("Machupichu");
    
            System.out.println(al);
            //al.removeIf(a -> a.contains("a"));
            //al.removeIf((String a) -> a.contains("a"));
            //al.removeIf((String a) -> { return a.contains("a");} );*/
    
            //al.removeIf((String a, String b) -> { return a.contains("a") || b.contains("a"); } ); NO COMPILE
            //predication(al, (a,b) -> a.contains("a") || b.contains("o")); No compile
            System.out.println(al);
    
        }
    
        public static void predication(ArrayList al, Predicate<String> checker){
    
        }
    }
    

    有什么帮助吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   MC Emperor    7 年前
    1. 供应商

      () -> true
      

      这不是谓词,而是 Supplier (或 BooleanSupplier


    1. 谓语

      a -> a.startWith("test")
      

      这是一个 Predicate boolean


    1. 谓语

      (String a) -> a.startWith("test")
      

      也是一个 谓语


    1. 双预测

      (a,b) -> a.startWith("test")
      

      谓语 ,但 BiPredicate 布尔型 .


    1. 双预测

      (String a, String b) -> a.startWith("test")
      

      双预测

    谓语 但是 (a, b) -> a.contains("a") || b.contains("o") 是一个 public static void predication(List<String> al, BiPredicate<String, String> checker) .

    另请注意,参数更改为 List<String> ArrayList<String> .因为您的变量被定义为类型 List .