List orderNoList=list.stream().map(Order::getOrderNo).collect(Collectors.toList());

https://blog.csdn.net/weixin_39702400/article/details/111895006

我就废话不多说了,大家还是直接看代码吧~

List list = new ArrayList();

Order o1 = new Order("1","MCS-2019-1123");

list.add(o1 );

Order o2= new Order("2","MCS-2019-1124");

list.add(o2);

Order o3= new Order("3","MCS-2019-1125");

list.add(o3);

List orderNoList=list.stream().map(Order::getOrderNo).collect(Collectors.toList());

System.out.println("输出单号集合:"+orderNoList);

List idList=list.stream().map(Order::getId()).collect(Collectors.toList());

System.out.println(idList)

结果

输出第一个:

["MCS-2019-1123", "MCS-2019-1124", "MCS-2019-1125"]

[1, 2, 3]

order类:

public class Order{
String id;

String orderNo;

public Order(String id, String orderNo) {
this.id = id;

this.orderNo= orderNo;

}

public String getId() {
return id;

}

public void setId(String order) {
this.id= id;

}

public String getOrderNo() {
return orderNo;

}

public void setOrderNo(String message) {
this.orderNo= orderNo;

}

}

补充知识:java8快速对list集合的筛选计算取值总结

在我们日常开发过程中,有很多场景需要对list集合进行取值筛选,以下是我对常用的一些知识点进行总结

首先,创建一个需要用到的对象,例如学生对象,有相关字段:姓名,年龄,性别

public class Student {
private String name;

private int age;

private String sex;

public Student( String name, int age,String sex) {
this.age = age;

this.name = name;

this.sex = sex;

}

public String getName() {
return name;

}

public void setName(String name) {
this.name = name;

}

public int getAge() {
return age;

}

public void setAge(int age) {
this.age = age;

}

public String getSex() {
return sex;

}

public void setSex(String sex) {
this.sex = sex;

}

}

其次,对这些字段属性进行赋值

Student s1 = new Student("小金",20,"女");

Student s2 = new Student("小宋",21,"女");

Student s3 = new Student("小张",25,"男");

Student s4 = new Student("小王",27,"男");

Student s5 = new Student("小王",30,"未知");

List list = new ArrayList<>();

list.add(s1);

list.add(s2);

list.add(s3);

list.add(s4);

list.add(s5);

1、遍历-foreach

使用stream流进行foreach遍历

list.stream().forEach(student->{
//处理逻辑,打印出所有学生的姓名

System.out.println(student.getName());

});

运行结果:

2、筛选list

filter函数的()里,应该放逻辑,判断条件,将符合条件的放到resultList中

代码如下,筛选集合中所有性别为女的学生

List resultList = list.stream().filter(student -> Objects.equals(student.getSex(),"女")).collect(Collectors.toList());

resultList.stream().forEach(student->{
System.out.println(student.getName());

});

运行结果:

3、list去重

根据性别去重

List unique = list.stream().collect(Collectors.collectingAndThen(

Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Student::getSex))), ArrayList::new));

unique.stream().forEach(student->{
System.out.println(student.getName());

});

运行结果:

4、取出list集合对象中某一个属性

取出每个对象中的姓名组成一个新的集合

List listStr = list.stream().map(Student::getName).collect(Collectors.toList());

去重

List listNew = listStr .stream().map(Student::getName).distinct().collect(Collectors.toList());

运行结果:

5、list与map互转,并根据某一属性进行分组

list转map (下方studentMap运行会报错,因为作为key值,name不能重复,所以正式开发中应该使用唯一性id作为key值)

Map studentMap = list.stream().collect(Collectors.toMap(Student::getName, student -> student));

list转数组

String[] listStrs = list.stream()

.filter(e -> Objects.equals(e.getSex(), "男"))

.sorted(Comparator.comparing(Student::getName))

.map(Student::getName).toArray(String[]::new);

list转map并且分组

Map> listMap = list.stream().collect(Collectors.groupingBy(Student::getSex));

运行结果:

根据对象某些属性,进行分组

Map studentsMap= list.stream()

.collect(Collectors.groupingBy(f -> Arrays.asList(f.getAge),f.getSex())));

map转list

List collect = studentMap.values().stream().collect(Collectors.toList());

6、过滤属性为空的字段

Student s6 = new Student("",30,"男");

list.add(s6);

List stringList = list.stream().map(s -> s.getName()).filter(s -> !s.isEmpty()).collect(Collectors.toList());

7、根据某一属性进行计算

根据年龄求最大值、最小值、平均值、总和、个数

IntSummaryStatistics resultNum = list.stream().mapToInt((item)->item.getAge()).summaryStatistics();

System.out.println("max:"+resultNum.getMax());

System.out.println("min:"+resultNum.getMin());

System.out.println("sum:"+resultNum.getSum());

System.out.println("average:"+resultNum.getAverage());

System.out.println("count:"+resultNum.getCount());

运行结果:

注意:

1、求和有三种类型,mapToInt,mapToLong,mapToDouble

2、如果是Bigdecimal数值类型,则计算方法如下,(新建对象)

Frult frult1 = new Frult("西瓜",new BigDecimal(1));

Frult frult2 = new Frult("梨子",new BigDecimal(2));

List frultList = new ArrayList<>();

frultList.add(frult1);

frultList.add(frult2);

BigDecimal totalPrice = frultList.stream().map(Frult::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);

//或者用mapToInt()进行强转(int->Bigdecimal)

结语:本人目前用到这么多,希望各位有更好的或者其它的用法给予建议与评论,有错误也希望能得到指正!也希望大家多多支持龙方网络。
————————————————
版权声明:本文为CSDN博主「weixin_39702400」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39702400/article/details/111895006

stream 提取某字段_java8从list集合中取出某一属性的值的集合案例相关推荐

  1. list中抽出某一个字段的值_java8从list集合中取出某一属性的值的集合案例

    我就废话不多说了,大家还是直接看代码吧~ List list = new ArrayList(); Order o1 = new Order("1","MCS-2019- ...

  2. java11从list中取出某个属性_java8从list集合中取出某一属性的值的集合案例

    我就废话不多说了,大家还是直接看代码吧~ List list = new ArrayList(); Order o1 = new Order("1","MCS-2019- ...

  3. java8之list集合中取出某一属性的方法

    上代码 List<User> list = new ArrayList<User>();User user1 = new User("第一位"," ...

  4. java listt add_Java8 使用流抽取ListT集合中T的某个属性操作

    免费资源网 - https://freexyz.cn/ 在java开发中,我们经常会遇到需要从一个集合中,抽取集合中元素的某一个属性.在java8之前,我们通常采用for循环去获取,但java8之后我 ...

  5. List集合中的对象根据属性排序

    List集合中的对象根据属性排序 集合类List存放的数据,默认是按照放入时的顺序存放的,比如依次放入A.B.C,则取得时候,则也是A.B.C的顺序,实际场景中,有时我们需要根据自定义的规则对List ...

  6. 有3个集合, 从其中一个集合中删除同时存在于另外两个集合的元素

    如下分享的邮件,在博客园做个记录,以便以后使用. 在这里,其实也想倡导一下程序员要具有的分享精神.鼓励大家多分享,平时有什么新的收获,最好在team里做个分享 .分享也是一种很好的事情.对团队来说,可 ...

  7. c语言两个线性表la lb,有两个集合用两个线性表LA和LB表示即线性表中的数据元素即为集合中的成员现要求一个新的集合...

    <有两个集合用两个线性表LA和LB表示即线性表中的数据元素即为集合中的成员现要求一个新的集合>由会员分享,可在线阅读,更多相关<有两个集合用两个线性表LA和LB表示即线性表中的数据元 ...

  8. PropertyGrid 绑定动态的属性与值的集合

    建立下面3个类: XProp XPropDescriptor XProps 建立Class XProp XProp 就是用户将具体使用的属性.PropertyGrid 很炫的一点就是属性的定制可以有很 ...

  9. java map替换_在java的Map集合中,怎样更改value的值

    展开全部 map集合没有专门更改value的方法,更改value的方法就是636f70793231313335323631343130323136353331333436316363map.put(k ...

最新文章

  1. python学习手册中文版免费下载-python学习手册下载|
  2. Eclipse+Tomcat7.0+MySQL 连接池设置
  3. Kernel Method的理解
  4. 修改MOSS2007内容查询部件实现自定义格式显示
  5. JBoss Forge NetBeans集成–入门
  6. android 对话框 图片,android – AlertDialog按钮的图像
  7. gitee自动部署的使用
  8. 佩斯大学计算机科学世界排名,美国佩斯大学留学推荐 计算机科学专业
  9. 判断是否为ajax请求
  10. java 字符串 常量_Java进阶——Java中的字符串常量池
  11. matlab与r语言函数对照表,R语言与matlab循环时间对比
  12. STM32学习笔记(十) CAN通讯测试(环回模式)
  13. javascript 的 split用法
  14. 统计学附录,F分布和t分布表
  15. H3CSE园区-Smart Link和Monitor Link
  16. Power Query 系列 (04) - 从 Web 导入数据
  17. gif透明背景动画_如何利用premiere制作GIF动态图片
  18. 重装系统之制作U盘启动盘 - 一盘通装
  19. 计算机专业同学综合自我评估,计算机专业学生个人自我评价
  20. Crime and Punishment

热门文章

  1. 循环队列 队空、队满 条件
  2. PAT(乙级) 1001 害死人不偿命的(3n+1)猜想 C++
  3. P4721 【模板】分治 FFT
  4. Codeforces Round #590 (Div. 3) E. Special Permutations 差分 + 思维
  5. Codeforces Round #712 (Div. 2) D. 3-Coloring 交互 构造
  6. Defend Your Country
  7. Rabbit的工作(2)
  8. P5056-[模板]插头dp
  9. 洛谷P3845-球赛【离散化,贪心】
  10. 【2018.4.7】模拟赛之三-ssl2384 字符串【字符串】