java8 Lambda尝尝鲜

时间:2022-05-06
本文章向大家介绍java8 Lambda尝尝鲜,主要内容包括首先是创建线程的方式、集合排序方式、控制台输出方式、对String类里的方法引用、下面介绍在接口中添加默认的方法、还可以在接口中增加静态方法、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

转载:猿天地 链接:http://cxytiandi.com/blog/detail/2196

java8都已经发布这么久了,一直没来得及使用,线上环境基本上是1.6,一下子升级的话还是有点危险,不过私下可以尝试下一些新的语法。

今天就简单的列出几种lambda的一些写法和之前的写法有什么不同。

首先是创建线程的方式

new Thread(new Runnable() {
   @Override
   public void run() {
       System.out.println("我是一个线程");
   }
}).start();

//新方式         
new Thread(() -> {
   System.out.println("我是一个线程");
}).start();

我们可以看到,Runnable这个接口被() -> 代替了。 也不用重写run方法了。

集合排序方式

List<String> names = Arrays.asList("张三", "张三丰" ,"张");
names.sort(new Comparator<String>() {
   @Override
   public int compare(String o1, String o2) {
     return Integer.compare(o1.length(), o2.length());
   }
});

//新方式
names.sort((o1, o2) -> Integer.compare(o1.length(), o2.length()));

这边我们按名称字数的少到多排序

控制台输出方式

for (String name : names) {
   System.out.println(name);
}

//新方式
names.forEach(System.out::println);

直接可以用forEach输出,是不是很方便呀。

下面我们介绍下构造方法的引用,上面的out::println是引用方法,下面是引用构造方法

public class Student {
    private String name;

    public Student(String name){
        this.name = name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

//循环创建Student对象
names.stream().map(Student::new).forEach( stu -> {
   System.out.println(stu.getName());
});

对String类里的方法引用

String[] strs = "welcome from cxytiandi.com".split(" ");
Arrays.sort(strs, String::compareToIgnoreCase);
System.out.println(Arrays.toString(strs));

下面介绍在接口中添加默认的方法

interface Person {
   long getId();
   default String getName() { return "cxytiandi.com"; }
}

class Teach implements Person {
   public long getId() { return 42; }
   public String getName() { return "猿天地"; }
}

还可以在接口中增加静态方法

public class StaticInterfaceMethods {
   public static void main(String[] args) {
      System.out.println(YuanTianDi.sayHello("World"));
   }
}

interface YuanTianDi {
   String hello();

   static String sayHello(String key) {
       return "Hellot" + key;
   }
}