1、Lambda 表达式(匿名函数)
2、Stream 多线程并行数据处理
package com.springboot.serializable.test;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Classname LambdaTest
* @Description java 8 新特性
* @Date 2019/7/25 15:04
* @Created by zhengchaorui
*/
public class LambdaTest {
public static void main(String[] args) {
testForeach();
testStreamDuplicates();
}
public static void testForeach() {
// 定义一个数组
String[] array = {
"德玛西亚-盖伦",
"德邦总管-赵信",
"蛮族之王-泰达米尔",
"死神-卡尔",
"死神-卡尔"
};
// 转换成集合
List<String> acgs = Arrays.asList(array);
// 传统的遍历方式
System.out.println("传统的遍历方式:");
for (String acg : acgs) {
System.out.println(acg);
}
System.out.println();
// 使用 Lambda 表达式以及函数操作(functional operation)
System.out.println("Lambda 表达式以及函数操作:");
acgs.forEach((acg) -> System.out.println(acg));
System.out.println();
// 在 Java 8 中使用双冒号操作符(double colon operator)
System.out.println("使用双冒号操作符:");
acgs.forEach(System.out::println);
System.out.println();
}
/**
* Stream 去重复
* String 和 Integer 可以使用该方法去重
*/
public static void testStreamDuplicates() {
System.out.println("Stream 去重复:");
// 定义一个数组
String[] array = {
"德玛西亚-盖伦",
"德邦总管-赵信",
"蛮族之王-泰达米尔",
"死神-卡尔",
"死神-卡尔"
};
// 转换成集合
List<String> acgs = Arrays.asList(array);
// Stream 去重复
acgs = acgs.stream().distinct().collect(Collectors.toList());
// 打印
for (String acg : acgs) {
System.out.println(acg);
}
}
}