Java Stream总结

Stream总结

简介

Stream函数式编程接口最初是在Java 8中引入的,并且与lambda一起成为Java开发的里程碑式的功能特性,它极大的方便了开放人员处理集合类数据的效率。

Stream就是一个数据流经的管道,并且在管道中对数据进行操作,然后流入下一个管道 。

collect

合并流

Person p1 = new Person("Tom", 11);
Person p2 = new Person("Jack", 12);
Person p3 = new Person("Jane", 15);
Person p4 = new Person("Mike", 14);
Person p5 = new Person("John", 13);

List<Person> newList = Stream.of(p1, p2, p3, p4, p5)
    .collect(Collectors.toList());
System.out.println(newList);
//[Person{name='Tom', age=11}, Person{name='Jack', age=12}, Person{name='Jane', age=15}, Person{name='Mike', age=14}, Person{name='John', age=13}]

filter

过滤流

List<Person> newList = Stream.of(p1, p2, p3, p4, p5)
    .filter(p -> p.getAge() > 13)
    .collect(Collectors.toList());
System.out.println(newList);
//[Person{name='Jane', age=15}, Person{name='Mike', age=14}]

map

转换流

List<String> newList = Stream.of(p1, p2, p3, p4, p5)
    .map(p -> p.getName())
    .collect(Collectors.toList());
System.out.println(newList);
//[Tom, Jack, Jane, Mike, John]

flatMap

将多个Stream合并为一个Stream

List<String> newList = Stream.of(p1, p2, p3)
    .flatMap(p -> Arrays.stream(p.getName().split("")))
    .collect(Collectors.toList());
System.out.println(newList);
//[T, o, m, J, a, c, k, J, a, n, e]

max & min

获取最大和最小值

Optional<Person> max = Stream.of(p1, p2, p3, p4, p5)
    .max((o1, o2) -> o1.getAge() - o2.getAge());

Optional<Person> min = Stream.of(p1, p2, p3, p4, p5)
    .min(Comparator.comparing(p -> p.getAge()));
System.out.println(max.get());
System.out.println(min.get());
//Person{name='Jane', age=15}
//Person{name='Tom', age=11}

count

统计数量

long count = Stream.of(p1, p2, p3, p4, p5)
    .filter(p -> p.getAge() > 13)
    .count();
System.out.println(count);
//2

reduce

累加计算

Integer reduce = Stream.of(1, 2, 3, 4, 5)
    .reduce(0, (acc, x) -> acc + x);

System.out.println(reduce);
//15

Collectors.joining

字符串拼接

String newStr = Stream.of(p1, p2, p3, p4, p5)
    .map(p -> p.getName())
    .collect(Collectors.joining("-", "[", "]"));
//[Tom-Jack-Jane-Mike-John]

猜你喜欢

转载自blog.csdn.net/qq_14876133/article/details/109314742