如何对List去重,含Java8写法
一、去除List中重复的String
public class StringDp {public static void main(String[] args) {//正常普通写法List<String> list=new ArrayList<>();list.add("迪丽热巴");list.add("古力娜扎");list.add("马尔扎哈");list.add("迪丽热巴");list.add("马尔扎哈");System.out.println(list);System.out.println("去重后:"+removeListStringDp(list));//Java8写法List<String> stringDpList=list.stream().distinct().collect(Collectors.toList());System.out.println("JAVA8去重:"+stringDpList);}public static List<String> removeListStringDp(List<String> list){Set<String> set=new LinkedHashSet<>();set.addAll(list);list.clear();list.addAll(set);return list;}
}
二、去除List中重复的对象\对象属性
//创建一个Person类,给出构造函数,get,set方法
public class Person {private String name;private int age;private String ho;...............//重写equals方法和hashcode方法@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return age == person.age &&Objects.equals(name, person.name) &&Objects.equals(ho, person.ho);}@Overridepublic int hashCode() {return Objects.hash(name, age, ho);}
}
public class ObjectDp {public static void main(String[] args) {Person p1=new Person("张三",18,"洗澡");Person p2=new Person("李四",19,"抽烟");Person p3=new Person("王五",20,"电影");Person p4=new Person("张三",18,"洗澡");Person p5=new Person("王五",18,"洗澡");//根据对象去重List<Person> persons= Arrays.asList(p1,p2,p3,p4,p5);List<Person> personList=new ArrayList<Person>();persons.stream().forEach(p->{if (!personList.contains(p)) {personList.add(p);}});System.out.println("去重前:"+persons);System.out.println("去重后:"+personList);//根据对象属性去重Set<Person> personSet=new TreeSet<Person>((o1, o2) -> o1.getName().compareTo(o2.getName()));personSet.addAll(persons);System.out.println("属性(名字)去重后:"+personSet);//java8根据对象属性去重List<Person> unique = persons.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(comparing(Person::getName))),ArrayList::new));System.out.println("Java8属性去重:"+unique);}
}
注:去除重复对象是用的contains()方法。出去重复对象属性是用的compareTo()方法。List 的contains()
方法底层实现使用对象的equals方法去比较的,其实重写equals()
就好,但重写了equals最好将hashCode也重写了。
如何对List去重,含Java8写法相关推荐
- java表数据去重_java8实现列表去重,java8的stream 和lambda的使用实例
不管我们做安卓开发还是javaweb开发,有时候我们会对列表进行去重操作,所谓的列表数据重复,通常体现在列表集合数据中的id属性相同.当然我们通过普通的方式也可以达到去重的效果.但是借助java8新特 ...
- 地表水水质监测数据/已去重/含坐标
购买数据可按需提供数据初步的处理,如按日.周.旬.月的汇总.均值.最大值.频数等. 数据来源:国家环境监测总站 ,中国环境监测总站 微信:GIS-hydraulic
- List 如何根据对象的属性去重?Java 8 轻松搞定!
欢迎关注方志朋的博客,回复"666"获面试宝典 一.去除List中重复的String public List<String> removeStringListDupli ...
- Java List<Object>去掉重复对象-java8
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. public List<String> removeStringListDupli(Li ...
- java集合对字符串或对象去重
由于开发中遇到了集合中筛选重复字符串或对象的操作,下面记录几种常用的方法,以备后续查询使用,直接上代码, /*** list去掉重复元素* * @param datas* @return*/publi ...
- list contains方法_Java中给List去重的5种方法,谁的效率更高?
刚开始学习list的时候就学习了在list集合中如何去除重复数据,当时第一想到的就是通过循环判断来去除重复数据,后来慢慢接触的东西多了,就开始注重一个效率,当数据量巨大的时候,怎么样才能查的更快,怎样 ...
- Java8特性解决空指针问题
在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示: 在这种情况下,有如下代码 这种写法,在u ...
- JAVA8之妙用Optional解决判断Null为空问题
来源:https://blog.csdn.net/zjhred/article/details/84976734 背景 在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullP ...
- 怎样用python对Excel的一列或几列去重
怎样用python对Excel中的某些列去重? 你好! 需求描述: 依据某一列去重,结果包含原表所有的列: 依据某几列去重,结果表只含这几列: 提供.xlsx格式,输出也要表格. 难点: 表格数据量大 ...
- Java8 Optional解决NPE问题
比如现在有两个类 User 和 Address public class User {private String name;private String phone;private Address ...
最新文章
- keepalived 高可用日志说明及实战配置日志路径
- Altium Designer旋转PCB、PCB中绕某点旋转
- 通过安装scl软件集,使用高版本gcc的方法
- 下次激活策略10_巅峰武侠卡牌巨制手游乱世江湖1元商城特权bt版今日10:00上线_乱世江湖...
- P3273-[SCOI2011]棘手的操作【线段树,并查集】
- Android小項目之---吃飯選哪?--》選擇對話框(附源碼)
- 小强升职记梗概_时间管理法 ——《小强升职记》读书笔记 1
- linux 内核 企鹅,Linux 内核 Makefile 体系简单分析
- 演练 打印直角三角形
- 部署 Job (第三部分)
- java poi无法读取word_poi,word_POI读取word内容的疑问,poi,word,java - phpStudy
- BZOJ 4415 洛谷 3988 [Shoi2013]发牌
- Web CAD SDK 14.1.0 New Crack
- html多级下拉菜单代码,jQuery实现的多级下拉菜单效果代码
- js中给html元素追加属性,用JS(JavaScript )给HTML元素增加id属性
- 百度统计的使用技巧_SEO建议
- 什么叫单模光纤_单模光缆是什么?单模光缆怎么连接?
- Redis 中的 集合(Set) SCARD:获取集合包含的元素数量
- linux 升级root,linux系统内核升级实例
- more than one file was found with os independent path'com/unionpay/blepayservice/'
热门文章
- UIPATH Timeout reached
- 使用微软TTS语音引擎实现文本朗读
- SQL项目-IOS 应用商店分析
- 游戏资讯平台APP项目计划书
- java 穷举 排列组合_穷举排列组合列表
- markdown格式,默写
- Python助你秒抢红包,拼手速?不存在!
- 在第四代计算机期间全世界逐步进入了,1、在第四代计算机期间内,计算机的应用逐步进入到.docx.docx...
- Meta http-equiv属性详解(转)
- 中央台“互联网时代”纪录片分集要点