public static void main(String[] args) throws ParseException {
Person person1=new Person("lks",23,1);
Person person2=new Person("wlm",24,0);
Person person3=new Person("ljy",25,1);
Person person4=new Person("zzq",23,1);
ArrayList<Person> list=new ArrayList<>();
list.add(person1);
list.add(person2);
list.add(person3);
list.add(person4);
/**
* stream的过滤、筛选、去重操作
*/
list.stream().filter((p)->p.getSex()==1).limit(2).distinct().forEach(p->{
System.out.println(p.getName());
System.out.println(p.getSex());
});
/**
* stream的排序遍历
* 通过map操作生成新的流
*/
list.stream().sorted((e1,e2)->{
if(e1.getAge().equals(e2.getAge())){
return e1.getName().compareTo(e2.getName());
}else{
return e2.getAge().compareTo(e1.getAge());
}
}).forEach(System.out::println);
list.stream().map(p->p.getName()).forEach(System.out::println);
/**
* stream的终止操作 max
* 查找和匹配
* allMatch-检查是否匹配所有元素
* anyMatch-检查是否至少匹配一个元素
* noneMatch-检查是否没有匹配所有元素
* findFirst-返回第一个元素
* findAny-返回当前流中的任意元素
* count-返回流中元素的总个数
* max-返回流中最大值
* min-返回流中最小值
*/
Optional<Person> max = list.stream().max((e1, e2) -> Integer.compare(e1.getAge(), e2.getAge()));
System.out.println(max.get().getAge());
/**
* stream的功能强大的终止操作reduce(规约操作)
*/
//1.计算总和
Integer[] i=new Integer[]{1,2,3,4};
List<Integer> integers = Arrays.asList(i);
Integer reduce = integers.stream().reduce(0, (x, y) -> x + y);
System.out.println(reduce);
//2.计算年龄综合
Optional<Integer> reduce1 = list.stream().map(p -> p.getAge()).reduce(Integer::sum);
System.out.println(reduce1);
/**
* stream的功能强大的终止操作collect
* Collect-将流转换为其他形式,接收一个Collection接口的实现,用于给Stream中元素做汇总的方法
*/
List<Integer> collect = list.stream().map(p -> p.getAge()).collect(Collectors.toList());
collect.stream().forEach(System.out::println);
}
JDK1.8的stream编程
最新推荐文章于 2020-06-21 15:51:07 发布