专栏首页猿天地java8 Lambda尝尝鲜

java8 Lambda尝尝鲜

转载:猿天地 链接: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 "Hello\t" + key;
   }
}

本文分享自微信公众号 - 猿天地(cxytiandi)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-09-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深入底层,仿MyBatis自己写框架

    最近研究了一下Mybatis的底层代码,写了一个操作数据库的小工具,实现了Mybatis的部分功能:

    猿天地
  • Spring Boot系列之环境搭建

    16年开始就在写Spring Boot相关的文章了,之前一直是在自己猿天地的博客上发布,今年开始维护公众号,大部分时间都在写新的文章。

    猿天地
  • spring boot中自定义错误提示页面

    当程序出错的时候,比如500错误,当用户输入的url错误时会找不到网页。 在这种情况下如果用默认的错误页面非常不友好。 一般我们都需要定制一些错误的页面。 在普...

    猿天地
  • Java泛型学习

    1、泛型的概念     泛型即“参数化类型”,就比如我们定义方法的时候,定义一个变量,称为形参,变量值根据传进去的实参的值不同而改变。而泛型的出现,就是为了解决...

    JMCui
  • 设计模式之原型模式

    我们在创建对象时,通常是通过new关键字来创建的。但是,思考一下,如果当前类的构造函数很复杂,每次new对象时都会消耗非常多的资源,这样肯定是不行的,耗时又费力...

    烟雨星空
  • Java基础巩固——反射

    什么是反射 ----    反射机制就是指程序运行时能够获取自身的信息。在Java中,只要给出类的名字,就可以通过反射机制来获取类的信息 哪里用的到反射机制 -...

    Janti
  • 呆呆的io流输入输出的一些基础

              关于io流的File类,下面来码一些基础属性:              文件的属性: 1 /* 2 public String...

    Gxjun
  • Spring Qualifier的使用

    spring 的 qualifier 平常使用一般直接是使用id 来限定,不过spring给我们提供了更强大的功能。

    Dylan Liu
  • 设计模式之简单工厂

    编写好之后,来看Main方法,当需要苹果时只需要修改一个参数就行了,并不需要在main方法中new,有小伙伴可能要问了,这代码没变少反而多了,关于这个问题请看设...

    tanoak
  • 深度解析反射机制

    之前的文章,有小伙伴留言说希望出一篇反射的教程,那今天我们就来说一说反射。对,就是这么好,所有小伙伴在留言,私信中提的问题,我都会逐一解答,提的一些要求,我也会...

    南风

扫码关注云+社区

领取腾讯云代金券