public static void main(String[] args) {//需求:根据List> 的map中name 属性相同去重/以下为造数据/

//创建数据,对根据姓名 name 去重

List>  allList = new ArrayList<>();

List>  smallList = new ArrayList<>();          Map map1 = new HashMap<>();

map1.put("id",2019);

map1.put("name","小明");

map1.put("id",2017);

map1.put("name","小王");          Map map2 = new HashMap<>();

map2.put("id",2020);

map2.put("name","小明");

allList.add(map1);

allList.add(map2);

smallList.add(map2);/以上为造数据/

/*将list map 转list pojo,必须要转成对象,因为要去重某一个属性值,而不是去重整个对象,所以必须重写 这个属性值的hashcode 和equals 值*/

Listlist1 = jsonToList(JSONArray.fromObject(allList).toString(),U.class);

Listlist2 = jsonToList(JSONArray.fromObject(smallList).toString(),U.class);          Set set = new HashSet<>();

set.addAll(list1);

set.addAll(list2);          for (U u :set){

System.out.println(u.getName());

}

}

运行结果:

image.pngpublic static   class  U {          private  Integer id;          private  String name;          public Integer getId() {               return id;

}          public void setId(Integer id) {               this.id = id;

}          public String getName() {               return name;

}          public void setName(String name) {               this.name = name;

}          /**必须重写hashcode 和 equals 方法 */

@Override

public int hashCode() {               return name.hashCode(); // 重写此属性值的hashcode,不然就是判断这个对象的hashcode

}          @Override

public boolean equals(Object obj) {               if (obj instanceof  U){

U o = (U)obj;                    if (o.getName().equals(name)){ //根据属性值进行判断

return true;

}

}               return super.equals(obj);

}

}/**

* 将json数据转换成pojo对象list

*/

public static List jsonToList(String jsonData, Class beanType) {

JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);        try {            List list = MAPPER.readValue(jsonData, javaType);            return list;

} catch (Exception e) {

e.printStackTrace();

}        return null;

}Setset1 = new HashSet<>();         Set set2 = new HashSet<>();

set1.addAll(list1);//小王、小明

set2.addAll(list2);//小明、小哥

set2.retainAll(set1); //求交集

set1.addAll(set2); //求并集

set1.removeAll(set2); //求差集

作者:南京杨小兵

链接:https://www.jianshu.com/p/bbca829654cb

list lt map gt java_利用Set 对Listlt;Maplt;String,Objectgt;gt; 中的map对象中某一个属性去重...相关推荐

  1. postman怎么传对象list_使用Postman传对象中包含map、list参数

    当我们使用Postman测试springmvc api接口时,接口中的参数经常会封装成对象,对象中还可能包含map.list请求方式如下: 1.请求对象中包含map参数 图中params是对象中Has ...

  2. 字符串排序java_利用Java程序将字符串进行排序与拼接

    1.初始生成字符串的代码程序: package com.map.test; import java.util.ArrayList; import java.util.Collections; impo ...

  3. 利用EXCEL表格中Power Map实现大数据可视化操作

    一.打开数据表格 首先打开我们事先准备好的2017年世界各国和地区GDP排名数据表格,里面有排名栏.国家地区栏.2016GDP栏.2017GDP栏.GDP增速栏.人均GDP栏以及人口栏,样式如下: 二 ...

  4. stopwatch java_利用StopWatch类监控Java代码执行时间并分析性能

    springframework中的StopWatch类可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间.一般用来测量代码执行所用的时间或者计算性能数据,在优化代码性能上可以使用Sto ...

  5. STL中的map、unordered_map、hash_map

    转自https://blog.csdn.net/liumou111/article/details/49252645 在之前使用STL时,经常混淆的几个数据结构,特别是做Leetcode的题目时,对于 ...

  6. 关于STL中的map和hash_map

    在网上看到有关STL中hash_map的文章,以及一些其他关于STL map和hash_map的资料,总结笔记如下:     1.STL的map底层是用红黑树实现的,查找时间复杂度是log(n):   ...

  7. java中遍历map的几种方法介绍

          喜欢用Java写程序的朋友都知道,我们常用的一种数据结构map中存储的是键值对,我们一般存储的方式是: map.put(key, value); 而提取相应键的值用的方法是: map.ge ...

  8. hive优化之------控制hive任务中的map数和reduce数

    一.    控制hive任务中的map数: 1.    通常情况下,作业会通过input的目录产生一个或者多个map任务. 主要的决定因素有: input的文件总个数,input的文件大小,集群设置的 ...

  9. 关于ArcGIS JS API中的map高度为400px的问题解决

    文章目录 问题现象 原因分析 解决方法 问题总结 问题现象 使用ArcGIS JavaScript API V3.27创建了一个最简单的地图页面,创建map对象时给传入了一个div,样式设的是宽高均为 ...

最新文章

  1. 安卓扫一扫自动跳转软件_ipad软件使用技巧
  2. timertask run函数未执行_图执行模式下的 TensorFlow 2
  3. python元组转换成列表_python-将元组的无序列表转换为pandas DataFrame
  4. Delphi-IOCP学习笔记九======性能测试和IOCP源码下载5000个连接数
  5. Android笔记 Android艺术探索笔记 Pacel VS Serialize Demo
  6. HTML_DOM的node屬性
  7. 最简单方法远程调试Python多进程子程序
  8. 【快速高斯模糊的实现】
  9. NullableTypes for .NET
  10. 微信小程序自定义字体及自定义图标问题说明
  11. Linux下如何进入Redis客户端
  12. 小游戏《塔防》开发(一)上篇
  13. css 实现一个尖角_如何用CSS实现一个带尖角的框?
  14. 使用pip出现报错:Could not find a version that satisfies the...No matching distribution distributio...
  15. swfobject2.2参数详解(swfobject.embedSWF)
  16. 洁净室(区)浮游菌检测方法操作规程标准
  17. vue 修改地址栏参数
  18. C# 实现Excel单元格画边框
  19. BIM+9大技术,你知多少?
  20. 【自动驾驶】【数据集】KITTI数据集简介和使用+ KITTI数据集国内下载地址

热门文章

  1. Android中Json数据解析
  2. 条款三 : 操作符is或as优于强制转型
  3. 终于换了杀毒工具(NOD32教育网升级)
  4. (转)学习淘淘商城第二十二课(KindEditor富文本编辑器的使用)
  5. JavaTPoint Python 中文教程【翻译完成】
  6. 斯坦福 CS183 YC 创业课系列中文笔记
  7. NumPy Cookbook 带注释源码 三、掌握 NumPy 常用函数
  8. RxJava API使用示例
  9. Android MemInfo 各项的意义(转)
  10. 未来的5年内,我为什么不看好“AI+教育”