不管我们做安卓开发还是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的使用实例相关推荐

  1. python 多重列表去重_Python对列表去重的多种方法(四种方法)

    Python对列表去重的多种方法(四种方法) 无聊统计了下列表去重到底有多少种方法.下面小编给大家总结一下,具体内容详情如下: 开发中对数组.列表去重是非常常见的需求,对一个list中的id进行去重, ...

  2. python对列表进行去重_Python对列表去重的4种方法

    开发中对数组.列表去重是非常常见的需求,对一个list中的id进行去重,有下面几种方法,前面两种方法不能保证顺序, 后面两种方法可以保持原来的顺序. 下面的代码都在Python3下测试通过, Pyth ...

  3. 两组字符串去重/两个列表去重

    一 需求 已知字符串A="1,2,3,4,5,6,7,8" 已知字符串B="1,3,4" 获取他们不相同的部分 二 延伸 当后端需要返回给前端完整的任务列表, ...

  4. lambda 对象去重_最火的java8新特性:Lambda 表达式

    主要内容 1. Lambda 表达式 2. 函数式接口 3. 方法引用与构造器引用 4. Stream API 5. 其他新特性 Java 8新特性简介 速度更快 代码更少(增加了新的语法 Lambd ...

  5. java 大数据文本去重_python实现文本去重且不打乱原本顺序

    摘要:这篇Python开发技术栏目下的"python实现文本去重且不打乱原本顺序",介绍的技术点是"Python实现.Python.文本去重.去重.顺序.文本" ...

  6. python列表去重_python列表去重

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 方法一:利用集合去重 # ! usrbinpython3# -*- coding ...

  7. python 列表去重(数组)的几种方法_python 列表去重(数组)的几种方法

    在抓取页面图片时,为避免重复抓取,将抓取的img结果(结果集是list类型的)通过集合去重.这里总结了下网上搜集到的几种方法. 一.方法1 代码如下 复制代码 ids = [1,2,3,3,4,2,3 ...

  8. python去重排序_python读取TXT到数组及列表去重后按原来顺序排序的方法

    #################################################################### # python 读取TXT到数组 列表去重,不打乱原来的顺序 ...

  9. 数据库表数据如何去重

    表结构为: 表数据为: 表中数据可以看到name列中有两行数据是一致的,去重的SQL语句为: 1 delete from user where name in (select name from (s ...

最新文章

  1. 看完 50000 张专辑封面后,AI 设计师疯狂输出
  2. Nagios监控Dell服务器硬件状态
  3. 乐视手机权限开启方法
  4. IntelliJ IDEA绑定Github报Error 403: Not Authorized没有授权问题解决方法
  5. 2、cookie session token详解
  6. 手机版python3.6.6的requests库下载_Python爬虫之Python3.6 Requests库的基本使用方法
  7. WPF vs2015,vs2012 添加ArcObjects SDK
  8. node08-express
  9. C#中的深度学习:使用OpenCV进行硬币检测
  10. 34-指针与二维数组
  11. 笔刷怎么做_零基础怎么学板绘?板绘小白必备基础知识
  12. apache+php+mysql服务器搭建
  13. 百度地图API-自定义图标覆盖物
  14. 八数码 (Astar)
  15. 走好数据中台最后一公里,为什么说数据服务API是数据中台的标配?
  16. LimeSDR GPS欺骗
  17. unexpected inconstancy
  18. FMI飞马网【线上直播】大数据安全实践
  19. coffeescript html5,CoffeeScript入门
  20. [分析力学]解题思路 - 拉格朗日方程

热门文章

  1. 如何在Web应用里消费SAP Leonardo的机器学习API
  2. 隐藏SAP CRM WebClient UI personalization 里某个field
  3. web service design time table
  4. 另一种方式实现事务码SE16里的结果集修改
  5. mysql数据库备份到oss_备份MySQL数据库并上传到阿里云OSS存储
  6. stringbuffer mysql_javascript制作sql转换为stringBuffer的小工具
  7. 删除排序链表中的重复元素Python解法
  8. UE4学习-4.25版本Possess无法继承、UNavigationSystem命名空间找不到的解决方法
  9. MySQL行转列与列转行
  10. java绑定变量怎么加_在JAVA 源程序中编写SQL语句时使用ORACLE 绑定变量