jdk8 Stream流 函数应用
这里列举几个常用的方法函数
1. 数据准备
List<String> list= Arrays.asList("1","5","2","3","10","9","6","1","2");
List<String> list1= Arrays.asList("张","张三","王五","李四");
2.filter 条件过滤
list1.stream()
.filter(s -> s.startsWith("张"))//包含 张
.forEach(System.out::println);
输入结果
3.count 数量统计
System.out.println(list.stream().count());
输出结果
4.limit 取前几条数据
list1.stream().filter(s -> s.contains("张")).limit(2).forEach(System.out::println);
输出结果
5.skip 跳过几个数据然后取
list1.stream().filter(s -> s.contains("张")).skip(1).forEach(System.out::println);
输入结果
6.map 将一种集合转换为另一种集合
list.stream().map(Integer::parseInt).forEach(System.out::println);
//将list集合由字符串转换为Int类型
输出结果
7.sorted 排序 默认升序
降序
list.stream().map(Integer::parseInt).sorted(((o1, o2) -> o2-o1)).forEach(System.out::println);
升序
list.stream().map(Integer::parseInt).sorted().forEach(System.out::println);
8.distinct 去重复
list.stream().distinct().forEach(System.out::println);
9.reduce 求和
List<Person> list3= new ArrayList<>();
list3.add(new Person("李四",15));
list3.add(new Person("张三",20));
list3.add(new Person("姐姐",27));
list3.add(new Person("阿姨",35));
Integer sumAge= list3.stream().map(person -> person.getAge())
.reduce(0,(x,y) -> x+y);
System.out.println(sumAge);
10.collect 转化为集合
List<Person> list3= new ArrayList<>();
list3.add(new Person("李四",15));
list3.add(new Person("张三",20));
list3.add(new Person("姐姐",27));
list3.add(new Person("阿姨",35));
List<Integer> sumAge= list3.stream().map(person -> person.getAge()).collect(Collectors.toList());
System.out.println(sumAge);