一、去除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写法相关推荐

  1. java表数据去重_java8实现列表去重,java8的stream 和lambda的使用实例

    不管我们做安卓开发还是javaweb开发,有时候我们会对列表进行去重操作,所谓的列表数据重复,通常体现在列表集合数据中的id属性相同.当然我们通过普通的方式也可以达到去重的效果.但是借助java8新特 ...

  2. 地表水水质监测数据/已去重/含坐标

    购买数据可按需提供数据初步的处理,如按日.周.旬.月的汇总.均值.最大值.频数等. 数据来源:国家环境监测总站 ,中国环境监测总站 微信:GIS-hydraulic  

  3. List 如何根据对象的属性去重?Java 8 轻松搞定!

    欢迎关注方志朋的博客,回复"666"获面试宝典 一.去除List中重复的String public List<String> removeStringListDupli ...

  4. Java List<Object>去掉重复对象-java8

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. public List<String> removeStringListDupli(Li ...

  5. java集合对字符串或对象去重

    由于开发中遇到了集合中筛选重复字符串或对象的操作,下面记录几种常用的方法,以备后续查询使用,直接上代码, /*** list去掉重复元素* * @param datas* @return*/publi ...

  6. list contains方法_Java中给List去重的5种方法,谁的效率更高?

    刚开始学习list的时候就学习了在list集合中如何去除重复数据,当时第一想到的就是通过循环判断来去除重复数据,后来慢慢接触的东西多了,就开始注重一个效率,当数据量巨大的时候,怎么样才能查的更快,怎样 ...

  7. Java8特性解决空指针问题

    在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示: 在这种情况下,有如下代码 这种写法,在u ...

  8. JAVA8之妙用Optional解决判断Null为空问题

    来源:https://blog.csdn.net/zjhred/article/details/84976734 背景 在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullP ...

  9. 怎样用python对Excel的一列或几列去重

    怎样用python对Excel中的某些列去重? 你好! 需求描述: 依据某一列去重,结果包含原表所有的列: 依据某几列去重,结果表只含这几列: 提供.xlsx格式,输出也要表格. 难点: 表格数据量大 ...

  10. Java8 Optional解决NPE问题

    比如现在有两个类 User 和 Address public class User {private String name;private String phone;private Address ...

最新文章

  1. keepalived 高可用日志说明及实战配置日志路径
  2. Altium Designer旋转PCB、PCB中绕某点旋转
  3. 通过安装scl软件集,使用高版本gcc的方法
  4. 下次激活策略10_巅峰武侠卡牌巨制手游乱世江湖1元商城特权bt版今日10:00上线_乱世江湖...
  5. P3273-[SCOI2011]棘手的操作【线段树,并查集】
  6. Android小項目之---吃飯選哪?--》選擇對話框(附源碼)
  7. 小强升职记梗概_时间管理法 ——《小强升职记》读书笔记 1
  8. linux 内核 企鹅,Linux 内核 Makefile 体系简单分析
  9. 演练 打印直角三角形
  10. 部署 Job (第三部分)
  11. java poi无法读取word_poi,word_POI读取word内容的疑问,poi,word,java - phpStudy
  12. BZOJ 4415 洛谷 3988 [Shoi2013]发牌
  13. Web CAD SDK 14.1.0 New Crack
  14. html多级下拉菜单代码,jQuery实现的多级下拉菜单效果代码
  15. js中给html元素追加属性,用JS(JavaScript )给HTML元素增加id属性
  16. 百度统计的使用技巧_SEO建议
  17. 什么叫单模光纤_单模光缆是什么?单模光缆怎么连接?
  18. Redis 中的 集合(Set) SCARD:获取集合包含的元素数量
  19. linux 升级root,linux系统内核升级实例
  20. more than one file was found with os independent path'com/unionpay/blepayservice/'

热门文章

  1. UIPATH Timeout reached
  2. 使用微软TTS语音引擎实现文本朗读
  3. SQL项目-IOS 应用商店分析
  4. 游戏资讯平台APP项目计划书
  5. java 穷举 排列组合_穷举排列组合列表
  6. markdown格式,默写
  7. Python助你秒抢红包,拼手速?不存在!
  8. 在第四代计算机期间全世界逐步进入了,1、在第四代计算机期间内,计算机的应用逐步进入到.docx.docx...
  9. Meta http-equiv属性详解(转)
  10. 中央台“互联网时代”纪录片分集要点