【总结】java8特性
1.lambda表达式
Lambda 表达式,也可称为闭包。主要作用有简化代码(集合遍历,匿名内部类)
public static void main(String[] args) {
// 1 - 简化遍历
List<String> list = Arrays.asList("aa", "bb", "cc");
list.forEach(str -> { //foreach的入参Consumer 就是java定义的一个函数式接口
str += "a";
System.out.println(str);
});
Map<String, String> aMap = new TreeMap<>();
aMap.put("Aluka", "AluWife");
aMap.put("GodV", "mifengaaa");
aMap.put("zz", "lym");
aMap.forEach((k, v) -> System.out.println(k + " " + v));
// 2 - 简化匿名内部类
Thread t1 = new Thread(() -> System.out.println(Thread.currentThread().getName() + "线程创建"));
Runnable runnable = () -> System.out.println(Thread.currentThread().getName() + "线程创建");
Thread t2 = new Thread(runnable);
}
2.方法引用
方法引用通过方法的名字来指向一个方法
方法引用可以使语言的构造更紧凑简洁,减少冗余代码。
方法引用使用一对冒号 ::

public class Java8Tester {
public static void main(String args[]){
List<String> names = new ArrayList();
names.add("Google");
names.add("Runoob");
names.forEach(System.out::println);
}
}
3.Stream流
Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象
(1) forEach :迭代流中的每个数据
Random random = new Random();
random.ints().limit(10).forEach(System.out::println);
(2)map:方法用于映射每个元素到对应的结果
List<Integer> collect = numbers.stream().map(i -> i * i).distinct().collect(Collectors.toList());
collect.forEach(System.out::println);
(3)filter:方法用于通过设置的条件过滤出元素
List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
// 获取空字符串的数量
long count = strings.stream().filter(string -> string.isEmpty()).count();
(4)limit: 方法用于获取指定数量的流
Random random = new Random();
random.ints().limit(10).forEach(System.out::println);
(5)sorted: 方法用于对流进行排序
Random random = new Random();
random.ints().limit(10).sorted().forEach(System.out::println);
(6)parallelStream: 是流并行处理程序的代替方法
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
// 获取空字符串的数量
long count = strings.parallelStream().filter(string -> string.isEmpty()).count();
(7)Collectors: 类实现了很多归约操作,例如将流转换成集合和聚合元素。Collectors 可用于返回列表或字符串
List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
String mergedString = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(", "));
4.默认方法
Java 8 新增了接口的默认方法。
简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。
我们只需在方法名前面加个 default 关键字即可实现默认方法。
解决:接口增加一个方法后,必须在实现类中都实现

浙公网安备 33010602011771号