java表数据去重_java8实现列表去重,java8的stream 和lambda的使用实例
不管我们做安卓开发还是javaweb开发,有时候我们会对列表进行去重操作,所谓的列表数据重复,通常体现在列表集合数据中的id属性相同。当然我们通过普通的方式也可以达到去重的效果。但是借助java8新特性可以很方便的实现列表去重,下面就写个小demo简单的演示一下。
主要实现代码
List persons = new ArrayList();
List ids = new ArrayList<>();//用来临时存储person的id
persons.add(new Person(1, "name1", 10));
persons.add(new Person(2, "name2", 21));
persons.add(new Person(5, "name5", 55));
persons.add(new Person(3, "name3", 34));
persons.add(new Person(1, "name1", 10));
List personList = persons.stream().filter(// 过滤去重
v -> {
boolean flag = !ids.contains(v.getId());
ids.add(v.getId());
return flag;
}
).collect(Collectors.toList());
System.out.println(personList);
运行后的打印如下.可以看出id为1时的重复数据已经被过滤掉了
[
Person{id=1, name='name1', age=10},
Person{id=2, name='name2', age=21},
Person{id=5, name='name5', age=55},
Person{id=3, name='name3', age=34}
]
person类的代码如下
package com.qcl.demo;
/**
* Created by qcl on 2018/3/26.
*/
public class Person {
private int id;
private String name;
private int age;
public Person() {
}
public Person(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
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 int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
这只是java8在我们开发时比较常用的一个操作。
如下面这个例子使用也比较普遍
获取person集合中的所有大于18周岁,并排序
List persons = new ArrayList();
persons.add(new Person(1, "name1", 10));
persons.add(new Person(2, "name2", 21));
persons.add(new Person(5, "name5", 55));
persons.add(new Person(3, "name3", 34));
persons.add(new Person(4, "name4", 6));
persons.stream()
.filter(p -> p.getAge() >= 18)//获取所有18岁以上的用户
.sorted(Comparator.comparing(Person::getAge))//依年纪升序排序
.sorted(Comparator.comparing(Person::getAge).reversed())//依年纪降序排序
.collect(Collectors.toList())
.forEach(System.out::println);
boolean isAllAdult = persons.stream().
allMatch(p -> p.getAge() > 18);
System.out.println("是否所有的用户都大于18岁" + isAllAdult);
总结:java8的使用,对于我们操作集合,数组提供了很大的便利。建议大家有机会多去了解下java8的新特性。
java表数据去重_java8实现列表去重,java8的stream 和lambda的使用实例相关推荐
- python 多重列表去重_Python对列表去重的多种方法(四种方法)
Python对列表去重的多种方法(四种方法) 无聊统计了下列表去重到底有多少种方法.下面小编给大家总结一下,具体内容详情如下: 开发中对数组.列表去重是非常常见的需求,对一个list中的id进行去重, ...
- python对列表进行去重_Python对列表去重的4种方法
开发中对数组.列表去重是非常常见的需求,对一个list中的id进行去重,有下面几种方法,前面两种方法不能保证顺序, 后面两种方法可以保持原来的顺序. 下面的代码都在Python3下测试通过, Pyth ...
- 两组字符串去重/两个列表去重
一 需求 已知字符串A="1,2,3,4,5,6,7,8" 已知字符串B="1,3,4" 获取他们不相同的部分 二 延伸 当后端需要返回给前端完整的任务列表, ...
- lambda 对象去重_最火的java8新特性:Lambda 表达式
主要内容 1. Lambda 表达式 2. 函数式接口 3. 方法引用与构造器引用 4. Stream API 5. 其他新特性 Java 8新特性简介 速度更快 代码更少(增加了新的语法 Lambd ...
- java 大数据文本去重_python实现文本去重且不打乱原本顺序
摘要:这篇Python开发技术栏目下的"python实现文本去重且不打乱原本顺序",介绍的技术点是"Python实现.Python.文本去重.去重.顺序.文本" ...
- python列表去重_python列表去重
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 方法一:利用集合去重 # ! usrbinpython3# -*- coding ...
- python 列表去重(数组)的几种方法_python 列表去重(数组)的几种方法
在抓取页面图片时,为避免重复抓取,将抓取的img结果(结果集是list类型的)通过集合去重.这里总结了下网上搜集到的几种方法. 一.方法1 代码如下 复制代码 ids = [1,2,3,3,4,2,3 ...
- python去重排序_python读取TXT到数组及列表去重后按原来顺序排序的方法
#################################################################### # python 读取TXT到数组 列表去重,不打乱原来的顺序 ...
- 数据库表数据如何去重
表结构为: 表数据为: 表中数据可以看到name列中有两行数据是一致的,去重的SQL语句为: 1 delete from user where name in (select name from (s ...
最新文章
- 看完 50000 张专辑封面后,AI 设计师疯狂输出
- Nagios监控Dell服务器硬件状态
- 乐视手机权限开启方法
- IntelliJ IDEA绑定Github报Error 403: Not Authorized没有授权问题解决方法
- 2、cookie session token详解
- 手机版python3.6.6的requests库下载_Python爬虫之Python3.6 Requests库的基本使用方法
- WPF vs2015,vs2012 添加ArcObjects SDK
- node08-express
- C#中的深度学习:使用OpenCV进行硬币检测
- 34-指针与二维数组
- 笔刷怎么做_零基础怎么学板绘?板绘小白必备基础知识
- apache+php+mysql服务器搭建
- 百度地图API-自定义图标覆盖物
- 八数码 (Astar)
- 走好数据中台最后一公里,为什么说数据服务API是数据中台的标配?
- LimeSDR GPS欺骗
- unexpected inconstancy
- FMI飞马网【线上直播】大数据安全实践
- coffeescript html5,CoffeeScript入门
- [分析力学]解题思路 - 拉格朗日方程
热门文章
- 如何在Web应用里消费SAP Leonardo的机器学习API
- 隐藏SAP CRM WebClient UI personalization 里某个field
- web service design time table
- 另一种方式实现事务码SE16里的结果集修改
- mysql数据库备份到oss_备份MySQL数据库并上传到阿里云OSS存储
- stringbuffer mysql_javascript制作sql转换为stringBuffer的小工具
- 删除排序链表中的重复元素Python解法
- UE4学习-4.25版本Possess无法继承、UNavigationSystem命名空间找不到的解决方法
- MySQL行转列与列转行
- java绑定变量怎么加_在JAVA 源程序中编写SQL语句时使用ORACLE 绑定变量