Lambda表达式:
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
格式:
(parameters) -> expression
或
(parameters) ->{ statements; }
主要作用:用于替代匿名内部类,即可以表示一个接口的实现类。
条件:Lambda表达式要表示的接口,必须只有一个要实现的方法
表达式说明:
parameters:传入的参数
expression:可以看成是接口中方法的实现,可以使用parameters中的参数
如:
// 1.1使用匿名内部类
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Hello world !");
}
}).start();
// 1.2使用 lambda expression
new Thread(() -> System.out.println("Hello world !")).start();
方法引用:
方法引用是指通过方法的名字来指向一个方法。通过使用一对冒号实现:“::”
默认方法:
Java 8 新增了接口的默认方法。简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。
我们只需在方法名前面加个default关键字即可实现默认方法。
Java 8 Stream
Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),
或者大批量数据操作 (bulk data operation)。
1)构造流:
// 1. Individual values
Stream stream = Stream.of("a", "b", "c");
// 2. Arrays
String [] strArray = new String[] {"a", "b", "c"};
stream = Stream.of(strArray);
stream = Arrays.stream(strArray);
// 3. Collections
List<String> list = Arrays.asList(strArray);
stream = list.stream();
2)Stream方法:
foreach() 用于遍历集合中每一个元素,并可以对每一个元素进行操作
list.stream().forEach(s-> System.out.println(s));
filter() 留下满足条件的元素,过滤掉不满足条件的元素
list.stream().filter(s -> !s.isEmpty()) //过滤掉为空的元素
map() 将流中的每一个元素映射为指定的元素
list.stream().map(n -> n * n). //将集合中所有的元素转换为大写
limit() 限定从流中获取元素的个数
sorted() 排序