首页  

lambda的优雅用法     所属分类 java 浏览量 1572
函数式接口  只有一个接口方法
@FunctionalInterface


排序 结合 方法引用  method references
结合 Optional 处理 null 

直接上代码



import java.util.Arrays;
import java.util.Date;
import java.util.Optional;

public class GraceLambdaTest {

	public static void main(String[] args) throws Exception {
		System.out.println("GraceLambdaTest start " + new Date());

		MyFunctionIntf intf = (s) -> System.out.println(s);
		intf.doSomething("hello");
		
		// 方法引用  method references
		intf = System.out::println;
		intf.doSomething("hello");
		
		Pet[]pets = {new Pet("tiger",9),new Pet("cat",3),new Pet("dog",7)};	
		
		System.out.println("order by age asc");
		// 引用 静态方法 
		Arrays.sort(pets,Pet::compareByAge);
		Arrays.stream(pets).forEach(System.out::println);
		
		System.out.println("order by age desc");
		
		Arrays.sort(pets,Pet::compareByAgeDesc);
		Arrays.stream(pets).forEach(System.out::println);
		
		
		// filter Predicate
		// forEach Consumer
		Arrays.stream(pets).filter(p -> p.age > 5).forEach(System.out::println);
		Arrays.stream(pets).filter(p -> p.age > 5).map(p -> p.name).forEach(System.out::println);

		
		// 与 Optional 结合使用 , 优雅处理 null 
		Pet pet = null;
		Optional<Pet> petopt = Optional.ofNullable(pet);
		String name = petopt.map(p -> p.name).map(s->s.toUpperCase()).orElse(null);
        System.out.println(name);
        
        pet = new Pet(null,7);
		petopt = Optional.ofNullable(pet);
		name = petopt.map(p -> p.name).map(s->s.toUpperCase()).orElse(null);
        System.out.println(name);
        
        pet = new Pet("hello",7);
		petopt = Optional.ofNullable(pet);
		name = petopt.map(p -> p.name).map(s->s.toUpperCase()).orElse(null);
        System.out.println(name);
        	
	}
}



完整代码
https://gitee.com/dyyx/hellocode/tree/master/src/dyyx/java8/lambda

上一篇     下一篇
六顶思考帽

三十分钟看清经济机器如何运转

联合国五大常任理事国经济实力排名

prometheus node-exporter 实用指标

prometheus node-exporter 全部指标

期货与期权