方法一:使用Set

List<User> newList = new ArrayList<User>();
Set<String> set = new HashSet<String>();
for (User user : list) {
String userName = user.getName();
if (!set.contains(userName)) { //set中不包含重复的
set.add(userName);
newList.add(user);
}
} System.out.println("Set去重后的集合: " + newList);

方法二:使用Map

List<User> newList = new ArrayList<User>();

HashMap<String, String> map = new HashMap<String, String>();
for (User user : list) {
String userName = user.getName();
String value = map.get(userName);
if (StringUtils.isBlank(value)) { //如果value是空的 说明取到的这个name是第一次取到
map.put(userName, userName);
newList.add(user); //newList就是我们想要的去重之后的结果
}
} System.out.println("Map去重后的集合: " + newList);

方法三:使用List(可以根据多个字段)

List<String> newList = new ArrayList<String>();
List<User> userList = new ArrayList<User>();
for (User cd : list) {
if (!newList.contains("" + cd.getAge())) { // 多个字段的话"" + cd.getAge() + cd.getSex()
newList.add("" + cd.getAge()); // 多个字段的话"" + cd.getAge() + cd.getSex()
userList.add(cd);
}
} System.out.println("List去重后的集合: " + userList);

附:测试User类

/**
* list根据某个字段去重
*
* @author xc
* @version V1.0 2017年9月30日
*/
public class list根据某个字段去重 { private static List<User> list; static {
User user1 = new User("zhangsan1", 20, true);
User user2 = new User("zhangsan2", 20, true);
User user3 = new User("zhangsan1", 30, true);
list = new ArrayList<User>();
list.add(user1);
list.add(user2);
list.add(user3);
} public static void main(String[] args) {
duplicateMap();
duplicateSet();
duplicateList();
} /**
* 使用List
*/
private static void duplicateList() {
List<String> newList = new ArrayList<String>();
List<User> userList = new ArrayList<User>();
for (User cd : list) {
if (!newList.contains("" + cd.getAge() + cd.getSex())) {
newList.add("" + cd.getAge() + cd.getSex());
userList.add(cd);
}
} System.out.println("List去重后的集合: " + userList);
} /**
* 使用set
*/
private static void duplicateSet() {
List<User> newList = new ArrayList<User>();
Set<String> set = new HashSet<String>();
for (User user : list) {
if (user == null) {
continue;
}
String userName = user.getName();
if (userName != null) {
if (!set.contains(userName)) { //set中不包含重复的
set.add(userName);
newList.add(user);
} else {
continue;
}
}
} System.out.println("Set去重后的集合: " + newList); } /**
* 使用map
*/
private static void duplicateMap() {
List<User> newList = new ArrayList<User>(); HashMap<String, String> map = new HashMap<String, String>();
for (User user : list) {
if (user == null) {
continue;
}
String name = user.getName();
if (name != null) {
String value = map.get(name);
if (StringUtils.isBlank(value)) { //如果value是空的 说明取到的这个name是第一次取到
map.put(name, name);
newList.add(user); //newList就是我们想要的去重之后的结果
} else {
continue;
}
}
} System.out.println("Map去重后的集合: " + newList); } }

list根据某个字段去重的更多相关文章

  1. list集合中指定字段去重

    在开发中,有时会需要指定字段去重,以下为实现方法: 假设有个房地产权的类,其中宗地代码ZDDM值重复,而我们在前端页面显示时,只需要一条数据,因为公共字段都一样: IEqualityComparer需 ...

  2. MySQL 查询重复的数据,以及部分字段去重和完全去重

    1.查找表中多余的重复记录(多个字段) select * from vitae a where (a.peopleId,a.seq) in  (select peopleId,seq from vit ...

  3. sql针对某一字段去重,并且保留其他字段

    今天客户提了一个小需求,希望我能提供一条sql语句,帮助他对数据中 _field 这个字段的值去重,并且保留其他字段的数据.第一反应是select distinct,但这种语句在对某个字段去重时,无法 ...

  4. php二维数组根据某个字段去重

    php的二维数组根据某个字段去重,在这默认为二维数组的结构是一样的,现在根据二维数组里的id字段去重,把id相同的重复的元素去掉 /** * 二维数组根据某个字段去重 * @param array $ ...

  5. List集合中的对象按照某个字段去重实现

    package com.liying.banana.user; import java.util.ArrayList; import java.util.Comparator; import java ...

  6. DataTable根据字段去重

    DataTable根据字段去重 最近需要对datatable根据字段去重,在网上搜了很多,找到了一个方法,代码如下 public static DataTable DistinctSomeColumn ...

  7. oracle 多字段去重查询

      oracle 多字段去重查询 CreationTime--2018年6月29日15点11分 Author:Marydon 1.情景展示 需要对表BASE_MRI_DEVICE的COMPNAME.F ...

  8. C#NPOI.RabbitMQ.EF.Attribute.HttpRuntime.Cache.AD域.List<T>根据指定字段去重.前端JQuery.Cache.I18N(多语言).data-xx(自定义属性)

    使用NPOI 操作Excel 个人使用的电脑基本默认安装Excel 操作起来 调用Excel的组件便可.如果是一台服务器.没有安装Excel,也就无法调用Excel组件. 在此推荐第三方插件.NPOI ...

  9. 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效

    数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...

随机推荐

  1. Tomcat异常及解决办法——持续更新中

    公司项目,开发语言为java,中间件为Tomcat,运行过程中,从Tomcat出现了一些异常,现将异常及解决办法记录如下,仅供参考.(不断在补充中.......) 异常一: 1.日志内容 org.ap ...

  2. 剑指offer(15)

    题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 书中的思路: 按照这个思路我们很容易写出以下代码: import java.util.S ...

  3. png8、16、24、32位的区别

    我们都知道一张图片可以保存为很多种不同的格式,比如bmp/png/jpeg/gif等等.这个是从文件格式的角度看,我们抛开文件格式,看图片本身,我们可以分为8位, 16位, 24位, 32位等. 单击 ...

  4. servlet中将值以json格式传入

    详细连接https://blog.csdn.net/e_wsq/article/details/71038270$('#but_json_json').click(function(){ }; $.a ...

  5. Promise是什么?

    一. Promise是什么? Promise是一种异步操作的解决方案,将写法复杂的传统的回调函数和监听事件的异步操作,用同步代码的形式表达出来. 避免了多级异步操作的回调函数嵌套. Promise最早 ...

  6. Java使用RabbitMQ之整合Spring(生产者)

    依赖包 <!--RabbitMQ集成spring--> <!-- https://mvnrepository.com/artifact/org.springframework.amq ...

  7. Python——列表操作

    一.列表中所有元素出现的次数,并输出为字典模式 def count_list(list): b_list = {} for i in set(list): b_list[i] = list.count ...

  8. Intel HD Graphics 620 (华硕FL5900U) Windows7下安装显卡驱动

    我们的牙膏大厂Intel,不但会挤牙膏,现在连驱动也不给你用了.KabyLake也就是第七代酷睿处理器,集成了Intel HD Graphics 620核显,核显(显卡)驱动程序只支持到Win10这一 ...

  9. Microsoft Bot Framework with LUIS

    今年微软的编程之美的主题是“对话即平台”,“人工智能”,要求参赛选手用到Bot Framework与Cognitive Services. 大多数人应该对这两个技术都不怎么熟悉吧,我就在这里写写自己所 ...

  10. default配置页面一级菜单用于进入二级菜单