Lambda表达式(一):入门

此文将浅谈Lambda表达式的一些常用之处。

一、先睹为快

先上段经典代码来让客官瞧一瞧

1
2
// 创建一个list集合, 现需求是:对其进行排序并打印到控制台
List<String>&nbsp;shield&nbsp;=&nbsp;&nbsp;Arrays.asList("sky","coulson","wode","may");```

// 原始方法
shield.sort(new Comparator() {
    @Override
    public int compare(String s1, String s2) {
        return s1.compareTo(s2);
    }
});
for (String name : shield) {
    System.out.println(name);
}

1
2
3
//&nbsp;JDK&nbsp;1.8
shield.sort((s1,&nbsp;s2)&nbsp;->&nbsp;s1.compareTo(s2));
shield.forEach(s&nbsp;->&nbsp;System.out.println(s));

// 再或者
shield.sort(String::compareTo);
shield.forEach(s -> System.out.println(s));

class
1
2

对于<code>shield.sort(<span style="color: #ff0000;">String::compareTo</span>);</code>这段代码,其实是Java 8 所允许的可以通过 :: 关键字来获取方法或构造函数的引用,本例中便是获取方法,下面的例子便是获取构造函数的引用。</p>

// Step1、定义一个简单的JavaBean, 但是包含了两种不同的构造方法
class Person{    
    String name;    
    Integer age;    
    Person() {}    
    Person(String name, Integer age) {        
        this.name = name;        
        this.age = age;    
    }
}

1
2
3
4
//&nbsp;Step2、定义一个person工厂的接口来创建person
interface&nbsp;&nbsp;PersonFactory<p&nbsp;extends&nbsp;Person>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;create(String&nbsp;name,&nbsp;Integer&nbsp;age);
}

// Step3、当想通过工厂来创建person的时候,现在,并不需要手动实现这个接口
// 而只需要使用 Person::new 来创建 Person 类的构造函数的引用, Java 编译器会自动地选择合适的构造函数来匹配
PersonFactory personFactory = Person::new;
Person person = personFactory.create(“sky”, 24);```

 

------ 本文结束 感谢阅读 ------
0%