首页>>后端>>java->Java 集合List的forEach()方法及Steam流用法

Java 集合List的forEach()方法及Steam流用法

时间:2023-12-02 本站 点击:0

在项目当中常用的就是List集合,本篇文章主要分享List的foreach遍历及stream流用法。

//使用com.google.guava包创建集合List<String>list=Lists.newArrayList("a","b","c","d");//遍历1其中anyThing可以用其它字符替换list.forEach((anyThing)->System.out.println(anyThing));//遍历2list.forEach(any->System.out.println(any));//匹配输出:"b"list.forEach(item->{if("b".equals(item)){System.out.println(item);}});

List Stream 常用方法

在项目当中见到同事在遍历List时,用到stream流,也想学习一下。

List<T>list=listTest.stream().filter(detail->{return!Objects.equal(detail.getId(),currCombo.getId());}).collect(Collectors.toList());

Stream 使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java 集合运算和表达的高阶抽象(菜鸟教程)。这里的Stream不同于IO中的stream。

举例:声明Student对象

publicclassStudent{privateStringname;privateIntegerage;privateIntegermath;privateIntegerenglish;//getsetpublicStudent(Stringname,Integerage,Integermath,Integerenglish){super();this.name=name;this.age=age;this.math=math;this.english=english;}@OverridepublicStringtoString(){return"Student[name="+name+",age="+age+",math="+math+",english="+english+"]";}}

Stream一些常用的API

publicclassStreamDemo{List<Student>list=null;//初始化数据@Beforepublicvoidbeforetest(){list=Arrays.asList(newStudent("Tom",18,88,90),newStudent("Jerry",20,77,89),newStudent("Lily",17,98,79),newStudent("Lucy",19,70,80),newStudent("LiLei",18,88,90),newStudent("HanMeiMei",21,87,79));}@Testpublicvoidstreamtest(){//filter过滤器返回还是一个stream流对象//查询math成绩大于80的学生并遍历输出list.stream().filter(e->e.getMath()>80).forEach(System.out::println);//.forEach(e->System.out.println(e))//统计数量countSystem.out.println(list.stream().count());//如统计总分大于160的人数System.out.println(list.stream().filter(e->e.getEnglish()+e.getMath()>160).count());//limit取前n个值list.stream().limit(3).forEach(System.out::println);//skip跳过前n个list.stream().skip(2).forEach(System.out::println);//distinct去除重复数据list.stream().distinct().forEach(System.out::println);//map映射元素可以对元素进行操作例如对每个学生年龄加1list.stream().map(e->{e.setAge(e.getAge()+1);returne;}).forEach(System.out::println);//sorted排序//升序list.stream().sorted((a,b)->{returna.getEnglish().compareTo(b.getEnglish());});//降序list.stream().sorted((a,b)->{returnb.getEnglish().compareTo(a.getEnglish());});//返回第一个元素Optional<Student>first=list.stream().findFirst();System.out.println(first.get());//返回任意一个元素System.out.println(list.stream().findAny().get());//anyMatch是否匹配任意一元素检查是否包含名字为Tom的System.out.println(list.stream().anyMatch(e->e.getName().equals("Tom")));//allMatch是否匹配所有元素System.out.println(list.stream().allMatch(e->e.getName().equals("Tom")));//noneMatch是否未匹配所有元素System.out.println(list.stream().noneMatch(e->e.getName().equals("Tom")));//findFirst返回元素中第一个值Studentstudent=list.stream().findFirst().get();//findAny返回元素中任意一个值Studentstudent1=list.stream().findAny().get();//max返回最大值查询英语成绩最高的学生Studentstudent2=list.stream().max((l1,l2)->l2.getEnglish().compareTo(l1.getEnglish())).get();//min最小值将上面l1,l2位置对调Studentstudent3=list.stream().max((l1,l2)->l2.getEnglish().compareTo(l1.getEnglish())).get();//将流对象转为listlist.stream().filter(e->e.getMath()>80).collect(Collectors.toList());//将流转未setlist.stream().filter(e->e.getMath()>80).collect(Collectors.toSet());//对对象中的某项进行统计IntSummaryStatisticsc=list.stream().collect(Collectors.summarizingInt(Student::getEnglish));System.out.println(c);//IntSummaryStatistics{count=6,sum=507,min=79,average=84.500000,max=90}}}

参考文章

https://blog.csdn.net/ndidai/article/details/106818926


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/java/10424.html