package co.springcloud.controller; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; import lombok.Data; import lombok.experimental.Accessors; /** * @author XX * @version $Id: StreamController.java, v 0.1 2022-08-17 10:34 XX.pt Exp $$ */ public class StreamController { public static void main(String[] args) { List<People> list = new ArrayList<>(); list.add(new People(1,"任嘉伦",32)); list.add(new People(2,"池昌旭",33)); list.add(new People(3,"白敬亭",29)); list.add(new People(4,"黄明昊",21)); list.add(new People(5,"张艺兴",30)); list.add(new People(6,"王鹤棣",28)); list.add(new People(7,"杨洋",30)); list.add(new People(8,"迪丽热巴",28)); System.out.println("------------------------"); System.out.println("按照年龄从大到小排序"); list.stream().sorted(Comparator.comparing(People::getAge).reversed()).forEach(System.out::println); System.out.println("按照年龄从小到大排序"); list.stream().sorted(Comparator.comparing(People::getAge)).forEach(System.out::println); System.out.println("只返回名字长度大于2的"); list.stream().filter(people -> people.getName().length()>2).forEach(System.out::println); System.out.println("返回id最大的那个"); System.out.println(list.stream().max(Comparator.comparing(people -> people.getId()))); System.out.println("list中的年龄都大于30岁吗(所有满足条件返回true,否则false)"); System.out.println(list.stream().allMatch(people -> people.getAge()>30)); System.out.println("list中的年龄都大于18岁吗"); System.out.println(list.stream().allMatch(people -> people.getAge()>18)); System.out.println("年龄有大于30的吗(有一个满足条件的就返回true)"); System.out.println(list.stream().anyMatch(people -> people.getAge()>30)); System.out.println("找出名字长度大于2的且年龄大于30的人(注意:过滤两次之后或者是多个条件之后要转成list)--------"); System.out.println(list.stream().filter(people -> people.getName().length()>2).filter(people -> people.getAge()>30).collect(Collectors.toList())); System.out.println(list.stream().filter(people -> people.getName().length()>2 && people.getAge()>30).collect(Collectors.toList())); System.out.println("找出名字长度大于等于3的且年龄最大的"); System.out.println(list.stream().filter(people -> people.getName().length()>=3).max(Comparator.comparing(people -> people.getAge()))); System.out.println("取年龄大于30且名字长度最长的"); System.out.println(list.stream().filter(people -> people.getAge()>30).max(Comparator.comparing(people -> people.getName().length()))); System.out.println("大于30岁的有几人"); System.out.println(list.stream().filter(people -> people.getAge()>30).count()); System.out.println("岁数一样大的放一起"); System.out.println(list.stream().collect(Collectors.groupingBy(people -> people.getAge()))); } @Data @Accessors(chain = true) public static class People{ private int id; private String name; private int age; public People(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } public People() { } } }
stream流的使用
于 2022-08-18 08:46:24 首次发布