java8总结

文章目录
  1. 1. Java8总结

Java8总结

/**
* Java8常见操作总结
*/
public class ExampleEmployee {

private static List<Employee> employeeList = new ArrayList<>();

static {
employeeList.add(Employee.builder().name("zhangsan").salary(3000).office("beijing").build());
employeeList.add(Employee.builder().name("lisi").salary(6000).office("shanghai").build());
employeeList.add(Employee.builder().name("wangwu").salary(20000).office("guangzhou").build());
employeeList.add(Employee.builder().name("zhaoliu").salary(8000).office("shenzhen").build());
employeeList.add(Employee.builder().name("qiangqi").salary(8000).office("beijing").build());
employeeList.add(Employee.builder().name("renba").salary(21000).office("beijing").build());
}

public static void main(String[] args) {
// employeeList 是否包含 office="shanghai"
boolean isMatch = employeeList.stream()
.anyMatch(employee -> "shanghai".equals(employee.getOffice()));
System.out.println(isMatch);
System.out.println("-------------------------");

// employeeList 的所有 salary 都大于4000
boolean matched = employeeList.stream()
.allMatch(employee -> employee.getSalary() > 4000);
System.out.println(matched);
System.out.println("-------------------------");

// 工资最高
Optional<Employee> hightSalary = employeeList.stream()
.max((e1, e2) -> Integer.compare(e1.getSalary(), e2.getSalary()));
System.out.println(hightSalary);
System.out.println("-------------------------");

Optional<Employee> hightSalary2 = employeeList.stream()
.max(Comparator.comparingInt(Employee::getSalary));
System.out.println(hightSalary2);
System.out.println("-------------------------");

// 返回姓名集合
List<String> names = employeeList.stream()
.map(Employee::getName)
.collect(Collectors.toList());
System.out.println(names);
System.out.println("-------------------------");

// List 转 Map
Map<String, Employee> employeeMap = employeeList.stream()
.collect(Collectors.toMap(Employee::getName, value -> value));
employeeMap.forEach((key, value) -> {
System.out.println(key + " : " + value);
});
System.out.println("-------------------------");

// 统计 office 是 beijing 的个数
long count = employeeList.stream()
.filter(employee -> "beijing".equals(employee.getOffice()))
.count();
System.out.println(count);
System.out.println("-------------------------");

// List 转换为 Set
Set<String> officeSet = employeeList.stream()
.map(Employee::getOffice)
.collect(Collectors.toSet());
System.out.println(officeSet);
System.out.println("-------------------------");

// 查找 office 是 beijing 的员工
Optional<Employee> allMatchedEmployees = employeeList.stream()
.filter(employee -> "beijing".equals(employee.getOffice()))
.findAny();
System.out.println(allMatchedEmployees);
System.out.println("-------------------------");

// 按照工资的降序来列出员工信息
List<Employee> descEmployeeList = employeeList.stream()
.sorted((e1, e2) -> Integer.compare(e2.getSalary(), e1.getSalary()))
.collect(Collectors.toList());
System.out.println(descEmployeeList);
System.out.println("-------------------------");

// 按照名字的升序列出员工信息
List<Employee> sortEmployeeByName = employeeList.stream()
.sorted(Comparator.comparing(Employee::getName))
.collect(Collectors.toList());
System.out.println(sortEmployeeByName);
System.out.println("-------------------------");

// 获取工资最高的前两名员工信息
List<Employee> top2EmployeeList = employeeList.stream()
.sorted((e1, e2) -> Integer.compare(e2.getSalary(), e1.getSalary()))
.limit(2)
.collect(Collectors.toList());
System.out.println(top2EmployeeList);
System.out.println("-------------------------");

// 获取平均工资
OptionalDouble averageSalary = employeeList.stream()
.mapToInt(Employee::getSalary)
.average();
System.out.println(averageSalary);
System.out.println("-------------------------");

// beijing 办公室平均工资
OptionalDouble averageSalaryByOffice = employeeList.stream()
.filter(employee -> "beijing".equals(employee.getOffice()))
.mapToInt(Employee::getSalary)
.average();
System.out.println(averageSalaryByOffice);
System.out.println("-------------------------");

// Java8 分组操作
Map<String, List<Employee>> groupMap = employeeList.stream()
.collect(Collectors.groupingBy(Employee::getOffice));
System.out.println(groupMap);
}
}