本文版权归 远方的风lyh和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作。

student类

public class Student {
private String age;
private Integer sex;
//省略get set。。。
}

Demo类

class Demo{
private String name;
private Integer sex;
private String age; public Demo(String age,Integer sex) {
this.age =age;
this.sex =sex;
}
 //省略get set。。
 }

list操作

public class Test{
public static void main(String[] args) {
List<Student> list =new ArrayList<>();
Student student1 = new Student();student1.setAge("12");student1.setSex(0);
Student student2 = new Student();student2.setAge("13");student2.setSex(2);
Student student3 = new Student();student3.setAge("11");student3.setSex(1);
Student student4 = new Student();student4.setAge("18");student4.setSex(1);
Student student5 = new Student();student5.setAge("18");student5.setSex(0);
Student student6 = new Student();student6.setAge("18");student6.setSex(2);
Student student7 = new Student();student7.setAge("18");student7.setSex(2);
list.add(student1);list.add(student2);list.add(student3);list.add(student4);
list.add(student5);list.add(student6);list.add(student7);
List<Demo> demos = new ArrayList<Demo>();
//原始数据
System.out.println("原始数据 组装list<demo>*******************");
demos = list.stream().map(student-> new Demo(student.getAge(),student.getSex())).collect(Collectors.toList());
demos.forEach(demo -> {
System.out.println("年龄 "+demo.getAge() +" 性别 " +demo.getSex()+",");
});
//只取sex为0
System.out.println("只取sex为0****************");
List<Demo> demorm =demos.stream().filter(demo -> demo.getSex() == 0).distinct().collect(Collectors.toList());
demorm.forEach(demo -> {
System.out.println("年龄 "+demo.getAge() +" 性别 " +demo.getSex()+",");
});
//筛选年龄大于12岁
System.out.println("筛选年龄大于12岁的*************");
List<Demo> demoFilter = demos.stream().filter(demo -> Integer.valueOf(demo.getAge()) > 12).collect(Collectors.toList());
demoFilter.forEach(demo -> {
System.out.println("年龄 "+demo.getAge() +" 性别 " +demo.getSex()+",");
});
//排序
System.out.println("排序******************");
List<Demo> demoSort = demos.stream().sorted((s1, s2) -> s1.getAge().compareTo(s2.getAge())).collect(Collectors.toList());
demoSort.forEach(demo -> {
System.out.println("年龄 "+demo.getAge() +" 性别 " +demo.getSex()+",");
});
//倒序
System.out.println("倒序****************");
ArrayList<Demo> demoArray = (ArrayList<Demo>) demos;
Comparator<Demo> comparator = (h1, h2) -> h1.getAge().compareTo(h2.getAge());
demos.sort(comparator.reversed());
demos.forEach(demo -> {
System.out.println("年龄 "+demo.getAge() +" 性别 " +demo.getSex()+",");
});
//多条件正序
System.out.println("多条件排序正序****************");
demoArray.sort(Comparator.comparing(Demo::getSex).thenComparing(Demo::getAge));
demoArray.forEach(demo -> {
System.out.println("年龄 "+demo.getAge() +" 性别 " +demo.getSex()+",");
});
//多条件倒序
System.out.println("多条件排序倒序 sex 倒序****************");
demoArray.sort(Comparator.comparing(Demo::getSex).reversed().thenComparing(Demo::getAge));
demoArray.forEach(demo -> {
System.out.println("年龄 "+demo.getAge() +" 性别 " +demo.getSex()+",");
});
//按照年龄分组
System.out.println("根据age分组结果为Map****************");
Map<String, List<Demo>> demoOder = demos.stream().collect(Collectors.groupingBy(Demo::getAge));
System.out.println(demoOder); }
}

操作效果:

jdk8- list操作的更多相关文章

  1. jdk8 流操作

    二.流 2.1 流介绍 流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现).就现在来说,你可以把它们看成遍历数据集的高级迭代器.此外,流还可以 ...

  2. JDK8 Optional操作学习

    介绍 Optional是JDK8中提供用于包含未知对象的工具类,即可以利用Optional包装对象来避免繁琐的空指针检查,以及NullPointException的处理,在Optional中,用val ...

  3. 好记性-烂笔头:JDK8流操作

    1):对象 List<User> 转 Map<String,Object> 案例如下: public class User { private Integer id; priv ...

  4. JDK8 Stream操作整理

    1,forEach this.quoteItemList.forEach(p -> p.setMode(mode)); 2,获取对话属性,去重后生成集合 List<String> p ...

  5. 【Java】【6】JDK8 Stream操作整理

    摘要: 1,List<EntityOld>转换为List<EntityNew> List<EntityOld> list = oldList; List<En ...

  6. list去重jdk1.8

    List<Object> newList = ll.stream().distinct().collect(Collectors.toList()); //jdk8去重操作

  7. jdk8中关于操作集合的一些新特性,遍历和排序操作

    jdk8增加了不少新的东西,在集合操作这块,就有如 lamda表达式,stream,sort,optional等新的类,主要涉及遍历和排序等方面,新特性提升了不少性能,我们开发就是要拥抱新事物,守着老 ...

  8. JDK8 Steam流操作

    原文:https://github.com/niumoo/jdk-feature/blob/master/src/main/java/net/codingme/feature/jdk8/Jdk8Str ...

  9. jdk8的stream流式计算的操作

    jdk8之后增加了流式计算,现在根据学习了流式计算,并把过程记录下来: Person.java的bean package com.zhang.collectordemo; /** * @program ...

  10. 【JDK8】Java8 Stream流API常用操作

    Java版本现在已经发布到JDK13了,目前公司还是用的JDK8,还是有必要了解一些JDK8的新特性的,例如优雅判空的Optional类,操作集合的Stream流,函数式编程等等;这里就按操作例举一些 ...

随机推荐

  1. 微软URLRewriter.dll的url重写在目标框架.Net Framework2.0、4.0和应用程序池经典模式、集成模式下的配置

    大家参考几篇园子里面的这篇文章: 文章1:微软URLRewriter.dll的url重写的简单使用 (讲解了使用UrlReWriter.dll的下载.web.config如何在目标框架2.0应用程序池 ...

  2. 利用springloaded进行java class动态替换

    我们知道对于一个java文件,如Test.java,首先需要通过javac命令(javac Test.java)进行编译,生成class文件,再将class文件在jvm上进行加载运行,也就是java命 ...

  3. 21. pt-stalk

    pt-stalk 适用场景:MySQL Server 性能波动出现的频率很低.例如.几天一次MySQL Server 性能波动出现的机率很快.例如.几秒闪过 pt-stalk h=192.168.10 ...

  4. Java第四次实验

    实验一: Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十四章: 参考ht ...

  5. python之模块的导入

    今天在做一个项目的时候卡在模块导入这个点上了.赶紧回头总结一下 一.被导入的文件和工作的脚本在一个目录下 1.导入一个.py文件里的功能或参数(导入模块) 先看一下目录结构: module里有两个功能 ...

  6. 《Linux就该这么学》第三天课程

    秦时明月经典语录: 王道: 千里挥戈,万众俯首.四海江湖,百世王道.——项羽 今天主要介绍了常用系统工作的命令 如需进一步了解,请前往https://www.linuxcool.com(附带配音) r ...

  7. 小白的CTF学习之路1——程序与CPU

    刚刚注册了这个博客园,尽量保持每日一更(*/ω\*) 今天看了po学院的教学视频,了解了程序是什么,如何在CPU当中工作的等各种之前未曾想过的问题,特此记录,以防忘记 首先我们学习程序与CPU之前需要 ...

  8. java动态生成验证码图片

    package cn.lijun.checkimg; import java.awt.image.BufferedImage;import java.io.BufferedReader; import ...

  9. Codeforces 1114 简要题解

    文章目录 A题 B题 C题 D题 E题 F题 传送门 然而这场div2div2div2没有什么难度比较大的题 A题 传送门 题意简述:三个人分别至少选x,y,zx,y,zx,y,z件物品,有三种物品数 ...

  10. Java面试题4

    一.JAVA基础篇-概念1.简述你所知道的Linux: Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网.云计算.智能手机(A ...