前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java8 Lambda尝尝鲜

java8 Lambda尝尝鲜

作者头像
猿天地
发布2018-04-03 12:22:16
6180
发布2018-04-03 12:22:16
举报
文章被收录于专栏:猿天地

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

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

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

首先是创建线程的方式

代码语言:javascript
复制
new Thread(new Runnable() {
   @Override
   public void run() {
       System.out.println("我是一个线程");
   }
}).start();

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

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

集合排序方式

代码语言:javascript
复制
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()));

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

控制台输出方式

代码语言:javascript
复制
for (String name : names) {
   System.out.println(name);
}

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

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

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

代码语言:javascript
复制
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类里的方法引用

代码语言:javascript
复制
String[] strs = "welcome from cxytiandi.com".split(" ");
Arrays.sort(strs, String::compareToIgnoreCase);
System.out.println(Arrays.toString(strs));

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

代码语言:javascript
复制
interface Person {
   long getId();
   default String getName() { return "cxytiandi.com"; }
}

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

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

代码语言:javascript
复制
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 "Hello\t" + key;
   }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 猿天地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先是创建线程的方式
  • 集合排序方式
  • 控制台输出方式
  • 对String类里的方法引用
  • 下面介绍在接口中添加默认的方法
  • 还可以在接口中增加静态方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档