创建stream流的方法
//1.可以通过Collection系列集合提供的stream()或者parallelStream()
List
Stream
//2.通过Arrays中的静态方法stream()获取数组流
String[] strs = new String[10];
Stream
//3.通过Stream类中的静态方法of()
Stream
//4.创建无限流
|
//4.1迭代 |
|
Stream |
public class TestStreamAPI2 {
List
new Employee("张三", 20, 2000),
new Employee("李四 ", 30, 3000),
new Employee("王五", 40, 4000),
new Employee("赵六", 50, 5000),
new Employee("田七", 60, 6000),
new Employee("田七", 60, 6000),
new Employee("田七", 60, 6000)
);
//筛选与切片
//filter 接收lambda,从流中排除某些元素
//limit 截断流,使其元素不超过给定的数量
//skip(n) 跳过元素,返回一个扔掉了前n个元素的流,如果流中的元素不足n个,则返回一个空流
//distinct 去重
@Test
public void test1() {
emps.stream().filter((e) -> e.getAge() > 40).filter(e -> e.getSalary() > 5000).distinct().forEach((x) -> System.out.println(x));
System.out.println("-----------");
Set
se.add("q");
se.add("w");
se.add("e");
se.add("r");
se.stream().limit(2).forEach(e -> System.out.println(e));
}
/**
* 映射
* map--接收Lambda,将元素转换成其他形式提供信息,接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素
* flatMap--接收一个函数作为参数,将流中的每个值换成另一个流,然后把所有流接成一个流
*/
@Test
public void test2() {
List
ls.stream().forEach(e->System.out.println(e.toUpperCase()));
System.out.println(ls.toString());
System.out.println("-----------------");
ls.stream().map(x->x.toUpperCase()).forEach(System.out::println);
System.out.println(ls.toString());
}
/**
* 排序
* sorted() -- 自然排序
* sorted(Comparator com) -- 定制排序
*/
@Test
public void test3(){
List
ls.stream().sorted().forEach(System.out::println);
}
/**
* allMatch -- 查找与匹配
* anyMatch -- 检查是否至少匹配一个元素
* noneMatch -- 检查是否没有匹配所有元素
* findFirst -- 返回第一个元素
* findAny -- 返回当前流中的任意元素
* count -- 返回流中元素的总个数
* max -- 返回流中最大值
* min -- 返回流中最小值
*/