美文网首页
lambda表达式

lambda表达式

作者: 后知不觉1 | 来源:发表于2020-07-10 16:17 被阅读0次

lambda 表达式就只有一个简化代码的作用,下面就一步一步看看他是如何简化穿创建实例的

1.普通调用一个实例的方法demo,在一个实例中地调用另一个实例方法

public class  Demo{
    public void Test(Fun fun){
        fun.funTest();
    }

      public static void main(String[] args){
           Demo a = new Demo();
           Fun b = new Fun();
           a.Test(b);
      }
}

class Fun{
    public void funTest(){
    }
}

这种先编写一个类,然后在new再传入过于繁琐;

2.接口匿名局部类,稍微优化;匿名也是快速创建对象作用;

  public class  Demo{
    public void Test(Fun fun){
       fun.funTest()
    }

      public static void main(String[] args){
           Demo a = new Demo();
           Fun b = new Fun();
           a.Test(new Fun(){
            public void funTest(){};
          });
      }
}

 interface Fun{
    public void funTest()
}

3.lambda表达式快速创建;

    public class  Demo{
    public void Test(Fun fun ){
       fun.funTest();
    }

      public static void main(String[] args){
           Demo a = new Demo();
           a.Test(()->{});  //这里就直接快速创建好了简单明了
      }
}

 interface Fun{
    public void funTest()
}

4.lambda表达是能够快速创建对象有一下几点要求

***1.接口抽象方法只有一个,可有默认多个方法,静态方法;也叫函数接口
***2.lambda内部使用的表里会自动加上final

系统提供了四大类函数接口 写的不错的 复制一遍备份一下

    //打印字符串
public static void main(String[] args) {
    handle("Hello world!", (s) -> System.out.println(s));
}
public static void handle(String s, Consumer<String> con) {
    con.accept(s);
}






public static void main(String[] args) {
    List<Integer> list = getNumList(10, () -> (int)(Math.random() *100));
    for(Integer i:list) {
        System.out.println(i);
    }
}
//产生指定个数的整数,并将其置于集合中
public static List<Integer> getNumList(int num, Supplier<Integer> sup){
    List<Integer> list = new ArrayList<>();
    for(int i = 0; i < num; i++) {
        list.add(sup.get());
    }
    return list;
}





  //将字符串转化为整型
public static void main(String[] args) {
    System.out.println(convert("100", (e) -> Integer.parseInt(e)));
}
public static Integer convert(String str, Function<String, Integer> fun) {
    return fun.apply(str);
}




// 将满足条件的整数放于集合中
public static void main(String[] args) {
    List<Integer> list = Arrays.asList(1, 2, 3, 5, 7, 11, 20, 47);
    List<Integer> myList = filterInt(list, (e) -> e > 3);
    for(Integer i : myList) {
        System.out.println(i);
    }
}

public static List<Integer> filterInt(List<Integer> list, Predicate<Integer> pre ){
    List<Integer> myList = new ArrayList<>();
    for(Integer i : list) {
        if(pre.test(i)) {
            myList.add(i);
        }
    }
    return myList;
}

相关文章

网友评论

      本文标题:lambda表达式

      本文链接:https://www.haomeiwen.com/subject/hcrmcktx.html