JAVA中List对象去除重复值的方法
JAVA中List对象去除重复值,大致分为两种情况,一种是List<String>、List<Integer>这类,直接根据List中的值进行去重,另一种是List<User>这种,List中存的是javabean对象,需要根据List中对象的某个值或某几个值进行比较去重。方法如下:
一、List<String>、List<Integer>对象去重复值。
这种情况的话,处理起来比较简单,通过JDK1.8新特性stream的distinct方法,可以直接处理。
List<String> list1 = Arrays.asList("a", "b", "c", "a", new String("c"));
list1.stream().distinct().forEach(System.out::println);
List<Integer> list2 = Arrays.asList(1, 2, 3, 1, new Integer(2));
list2.stream().distinct().forEach(System.out::println);
二、List<User>对象去重复值。
这种的话,不能直接比较List中的对象,需要重写bean对象的equals和hashCode方法,然后通过放入Set集合来自动去重,具体例子如下。
对象实体:
@Data
@AllArgsConstructor
public class User {
private String id;
private String name;
private int age; public boolean equals(Object obj) {
User u = (User) obj;
return name.equals(u.name);
} public int hashCode() {
String in = name;
return in.hashCode();
}
}
以上例子中就是通过比较姓名相同,即认为对象相等。
List<User> userList = new ArrayList<>();
userList.add(new User("1", "peter", 18));
userList.add(new User("2", "stark", 25));
userList.add(new User("3", "peter", 22)); Set<User> userSet = new HashSet<>(userList);
List<User> list = new ArrayList<>(userSet);
list.forEach(System.out::println);
通过将List放入Set进行自动去重(即使用到上面的equals与hashCode方法),然后重新放回List中即可。
JAVA中List对象去除重复值的方法的更多相关文章
- Java中List集合去除重复数据的方法
1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list. ...
- Java中List集合去除重复数据的方法1
1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = ...
- JAVA中JavaBean对象之间属性拷贝的方法
JAVA中JavaBean对象之间的拷贝通常是用get/set方法,但如果你有两个属性相同的JavaBean或有大部分属性相同的JavaBean,对于这种情况,可以采用以下几个简便方法处理. 下面对这 ...
- Java中List集合去除重复数据的六种方法
1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list. ...
- Java中List集合去除重复数据的四种方法
1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < lis ...
- java中的对象,类。与 方法的重载。
对象: 一切皆为对象.对象包括两部分内容:属性(名词形容词),行为(动词).对象和对象之间是有关系的: 派生,关联,依赖. 类: 对同一类别的众多对象的一种抽象.类,还是用来生成对象的一种模板,对象是 ...
- Java中判断对象是否为空的方法
首先来看一下工具StringUtils的判断方法: 一种是org.apache.commons.lang3包下的: 另一种是org.springframework.util包下的.这两种S ...
- 给json对象去除重复的值
给数组去除重复值 Array.prototype.distinct = function() { var arr = this, result = [], i, j, len = arr.length ...
- java集合 collection-list-ArrayList 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。
import java.util.*; /* 将自定义对象作为元素存到ArrayList集合中,并去除重复元素. 比如:存人对象.同姓名同年龄,视为同一个人.为重复元素. 思路: 1,对人描述,将数据 ...
随机推荐
- PHP中的匿名类
许久不练,要写起来. <?php //匿名类, 同样可以使用继承,接口,特性 //内部匿名类使用外部类的方法和属性,通过继承或构造方法传参 $object = new class { publi ...
- 某个新闻网站抓去自媒体账号 queryId js破解
第一步: 发现加密 第二部:搜索加密参数 queryId 第三部:找到js核心加密代码 第四部:代码实现 window = {} function utf8ToBase64(t) { console. ...
- js动画--透明度变化
对于设置元素的透明度的变化.主要思想也是通过一个定时器来控制的. 此外对于透明度有一点要说明一下,就是在IE中我们在css中设置透明度的方式filter:alpha(opacity:value)其中v ...
- 最后一个对象属性后边不要加豆号的bug,血淋淋的教训啊,模块化开发IE7下的严重错误,养成好习惯
最近总是写滚动图效果,重复的劳动后,决定写一个滚动图的封装插件.结果写完后在其他浏览器都可以用,却IE7下毫无反应.反复测试各种检查后,发现竟然是在参数对象最后一个属性后多加了个逗号,结果就死在了IE ...
- sql 查询哪些字段重复及(in和exict的区别)
select count(1),content_id,keyword_id from tb_content_keyword_relation group by content_id,keyword_i ...
- tomcat和apache的区别--http server vs application server
1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展. 2. Apache和Tomcat都可以做为独立的web服务器来运行,但是A ...
- (知识点1)#pragma once 与 #ifndef 解析
例如 为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式.在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还 ...
- Python 10 训练模型
原文:https://www.cnblogs.com/denny402/p/7520063.html 原文:https://www.jianshu.com/p/84f72791806f 原文:http ...
- 4-网页,网站,微信公众号基础入门(配置网站--下载安装PHP)
https://www.cnblogs.com/yangfengwu/p/10979101.html 这一节咱看一下如何在原先的基础上实现网站 首先去下载 PHP https://windows.ph ...
- [linux][c++]linux c++ 通过xcb库获取屏幕大小
linux c++ 通过xcb库获取屏幕大小 #include <stdio.h> #include <xcb/xcb.h> /** clang++ main.cpp -o m ...