jdk8- list操作
本文版权归 远方的风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操作的更多相关文章
- jdk8 流操作
二.流 2.1 流介绍 流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现).就现在来说,你可以把它们看成遍历数据集的高级迭代器.此外,流还可以 ...
- JDK8 Optional操作学习
介绍 Optional是JDK8中提供用于包含未知对象的工具类,即可以利用Optional包装对象来避免繁琐的空指针检查,以及NullPointException的处理,在Optional中,用val ...
- 好记性-烂笔头:JDK8流操作
1):对象 List<User> 转 Map<String,Object> 案例如下: public class User { private Integer id; priv ...
- JDK8 Stream操作整理
1,forEach this.quoteItemList.forEach(p -> p.setMode(mode)); 2,获取对话属性,去重后生成集合 List<String> p ...
- 【Java】【6】JDK8 Stream操作整理
摘要: 1,List<EntityOld>转换为List<EntityNew> List<EntityOld> list = oldList; List<En ...
- list去重jdk1.8
List<Object> newList = ll.stream().distinct().collect(Collectors.toList()); //jdk8去重操作
- jdk8中关于操作集合的一些新特性,遍历和排序操作
jdk8增加了不少新的东西,在集合操作这块,就有如 lamda表达式,stream,sort,optional等新的类,主要涉及遍历和排序等方面,新特性提升了不少性能,我们开发就是要拥抱新事物,守着老 ...
- JDK8 Steam流操作
原文:https://github.com/niumoo/jdk-feature/blob/master/src/main/java/net/codingme/feature/jdk8/Jdk8Str ...
- jdk8的stream流式计算的操作
jdk8之后增加了流式计算,现在根据学习了流式计算,并把过程记录下来: Person.java的bean package com.zhang.collectordemo; /** * @program ...
- 【JDK8】Java8 Stream流API常用操作
Java版本现在已经发布到JDK13了,目前公司还是用的JDK8,还是有必要了解一些JDK8的新特性的,例如优雅判空的Optional类,操作集合的Stream流,函数式编程等等;这里就按操作例举一些 ...
随机推荐
- BigDecimal用法总结
BigDecimal用法总结 BigDecimal常用于金额的计算,下面总结下这次项目中BigDecimal的用法. 1.加减乘除 2.设置精度 3.取反 加减乘除分别调用函数 [java] view ...
- JS的事件流的概念(重点)
09-JS的事件流的概念(重点) 在学习jQuery的事件之前,大家必须要对JS的事件有所了解.看下文 事件的概念 HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件 ...
- JS同步与异步;
JS的同步与异步 同步:代买从上往下的执行 异步:每个模块各执行各的,同时执行,互不干扰 四个异步事件:(1)定时器(2)ajax(3)时间的绑定(4)回调函数 现在用定时器来说一说setTimeOu ...
- spring入门--spring入门案例
spring是一个框架,这个框架可以干很多很多的事情.感觉特别吊.但是,对于初学者来说,很难理解spring到底是干什么的.我刚开始的时候也不懂,后来就跟着敲,在后来虽然懂了,但是依然说不明白它到底是 ...
- 关于java中的一些循环
1:switch语句 (1)格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; bre ...
- python02 运算符,基本数据类型,整型,字符串
1.python开发IDE pycharm,python编写工具,, #专业版 #不需要汉化 注册码问题解决 https://www.cnblogs.com/evlon/p/4934705.html整 ...
- chrom中 background 调用pop.js
//监听快捷键 chrome.commands.onCommand.addListener(function(command) { if (command == "cleanKey" ...
- mysql查询数据
select column,column from table where clause [limit n] [offset]; 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用W ...
- java内存性能调优编码注意
1.没有必要时请不用使用静态变量 使用Java的开发者都知道,当某个对象被定义为stataic变量所引用,这个对象所占有的内存将不会被回收.有时,开发者会将经常调用的对象或者变量定义为static,以 ...
- 测试快速关闭innodb的方法
测试mysqlporformanceblog提供的减少关闭innodb时间的方法 经常发现一些MySQL镜像库的InnoDB的关闭时间会特别久,mysqlperformanceblog给出了一个不错的 ...