package com.company;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
learnStream();
}
public static void learnStream() {
////首先,创建一个1-6乱序的List
List<Integer> lists = new ArrayList<>();
lists.add(4);
lists.add(3);
lists.add(6);
lists.add(1);
lists.add(5);
lists.add(2);
//遍历list
System.out.print("lists数据:");
for (Integer elem : lists) {
System.out.print(elem + ",");
}
System.out.println();
System.out.println();
//获取list中的最小值
System.out.print("list中的最小值:");
Stream<Integer> stream = lists.stream();
Optional<Integer> min = stream.min(Integer::compareTo);
if (min.isPresent()) {
System.out.println(min.get());
}
System.out.println();
//获取list中的最大值
System.out.print("list中的最大值:");
lists.stream().max(Integer::compareTo).ifPresent(System.out::println);
System.out.println();
//排序
System.out.print("排序:");
Stream<Integer> sorted = lists.stream().sorted();
sorted.forEach(elem -> System.out.print(elem + ","));
System.out.println();
System.out.println();
//过滤
System.out.print("过滤list,只留下大于3的元素:");
lists.stream().filter(elem -> elem > 3).forEach(elem -> System.out.print(elem + ","));
System.out.println();
//过滤
System.out.print("过滤list,只留下大于0并且小于4的元素:");
lists.stream().filter(elem -> elem > 0).filter(elem -> elem < 4).forEach(elem -> System.out.print(elem + ","));
System.out.println();
System.out.print("过滤list,只留下大于0并且小于4的元素,并排序:");
lists.stream().filter(elem -> elem > 0).filter(elem -> elem < 4).sorted(Integer::compareTo).forEach(elem -> System.out.print(elem + ","));
System.out.println();
System.out.println();
//经过了前面的这么多流操作,我们再来看看List里面的值有没有发生什么改变
//遍历list
System.out.print("原来lists数据:");
for (Integer elem : lists) {
System.out.print(elem + ",");
}
}
}