list lt map gt java_利用Set 对Listlt;Maplt;String,Objectgt;gt; 中的map对象中某一个属性去重...
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对象中某一个属性去重...相关推荐
- postman怎么传对象list_使用Postman传对象中包含map、list参数
当我们使用Postman测试springmvc api接口时,接口中的参数经常会封装成对象,对象中还可能包含map.list请求方式如下: 1.请求对象中包含map参数 图中params是对象中Has ...
- 字符串排序java_利用Java程序将字符串进行排序与拼接
1.初始生成字符串的代码程序: package com.map.test; import java.util.ArrayList; import java.util.Collections; impo ...
- 利用EXCEL表格中Power Map实现大数据可视化操作
一.打开数据表格 首先打开我们事先准备好的2017年世界各国和地区GDP排名数据表格,里面有排名栏.国家地区栏.2016GDP栏.2017GDP栏.GDP增速栏.人均GDP栏以及人口栏,样式如下: 二 ...
- stopwatch java_利用StopWatch类监控Java代码执行时间并分析性能
springframework中的StopWatch类可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间.一般用来测量代码执行所用的时间或者计算性能数据,在优化代码性能上可以使用Sto ...
- STL中的map、unordered_map、hash_map
转自https://blog.csdn.net/liumou111/article/details/49252645 在之前使用STL时,经常混淆的几个数据结构,特别是做Leetcode的题目时,对于 ...
- 关于STL中的map和hash_map
在网上看到有关STL中hash_map的文章,以及一些其他关于STL map和hash_map的资料,总结笔记如下: 1.STL的map底层是用红黑树实现的,查找时间复杂度是log(n): ...
- java中遍历map的几种方法介绍
喜欢用Java写程序的朋友都知道,我们常用的一种数据结构map中存储的是键值对,我们一般存储的方式是: map.put(key, value); 而提取相应键的值用的方法是: map.ge ...
- hive优化之------控制hive任务中的map数和reduce数
一. 控制hive任务中的map数: 1. 通常情况下,作业会通过input的目录产生一个或者多个map任务. 主要的决定因素有: input的文件总个数,input的文件大小,集群设置的 ...
- 关于ArcGIS JS API中的map高度为400px的问题解决
文章目录 问题现象 原因分析 解决方法 问题总结 问题现象 使用ArcGIS JavaScript API V3.27创建了一个最简单的地图页面,创建map对象时给传入了一个div,样式设的是宽高均为 ...
最新文章
- 安卓扫一扫自动跳转软件_ipad软件使用技巧
- timertask run函数未执行_图执行模式下的 TensorFlow 2
- python元组转换成列表_python-将元组的无序列表转换为pandas DataFrame
- Delphi-IOCP学习笔记九======性能测试和IOCP源码下载5000个连接数
- Android笔记 Android艺术探索笔记 Pacel VS Serialize Demo
- HTML_DOM的node屬性
- 最简单方法远程调试Python多进程子程序
- 【快速高斯模糊的实现】
- NullableTypes for .NET
- 微信小程序自定义字体及自定义图标问题说明
- Linux下如何进入Redis客户端
- 小游戏《塔防》开发(一)上篇
- css 实现一个尖角_如何用CSS实现一个带尖角的框?
- 使用pip出现报错:Could not find a version that satisfies the...No matching distribution distributio...
- swfobject2.2参数详解(swfobject.embedSWF)
- 洁净室(区)浮游菌检测方法操作规程标准
- vue 修改地址栏参数
- C# 实现Excel单元格画边框
- BIM+9大技术,你知多少?
- 【自动驾驶】【数据集】KITTI数据集简介和使用+ KITTI数据集国内下载地址