对List<Map>里的map的某个属性重复的值进行处理的方法
package test; import java.util.*;
import java.util.stream.Collectors; public class Test5 { public static void main(String[] args) { List<LinkedHashMap<String, Object>> list = new ArrayList<>();
list.add(new LinkedHashMap<String, Object>() {{
put("id", "a");
put("age", "13");
put("sex", "男");
}});
list.add(new LinkedHashMap<String, Object>() {{
put("id", "a");
put("age", "14");
put("sex", "男");
}});
list.add(new LinkedHashMap<String, Object>() {{
put("id", "b");
put("age", "14");
put("sex", "男");
}});
list.add(new LinkedHashMap<String, Object>() {{
put("id", "c");
put("age", "14");
put("sex", "男");
}});
list.add(new LinkedHashMap<String, Object>() {{
put("id", "");
put("age", "14");
put("sex", "男");
}});
list.add(new LinkedHashMap<String, Object>() {{
put("id", "c");
put("age", "14");
put("sex", "男");
}}); handleRepeatPrimaryKey(list, "id");
List<LinkedHashMap<String, Object>> hasList = new ArrayList<>();
hasList = list.stream().filter(x -> !x.get("id").toString().equals("")).collect(Collectors.toList());
List<LinkedHashMap<String, Object>> notHasList = new ArrayList<>();
notHasList = list.stream().filter(x -> x.get("id").toString().equals("")).collect(Collectors.toList()); System.out.println(hasList);
System.out.println(notHasList); } public static List<LinkedHashMap<String, Object>> handleRepeatPrimaryKey(List<LinkedHashMap<String, Object>> list, String id) {
List<LinkedHashMap<String, Object>> itemList = new ArrayList<>();
for (LinkedHashMap<String, Object> lhm : list) {
if (itemList.size() == 0) {
itemList.add(lhm);
} else {
ListIterator<LinkedHashMap<String, Object>> listIterator = itemList.listIterator();
while (listIterator.hasNext()) {
if (listIterator.next().get(id).toString().equals(lhm.get(id).toString())) {
lhm.put(id, "");
}
}
// 注意放在循环外面
listIterator.add(lhm);
}
}
return list;
}
}

对重复主键进行处理,取第一个,剩余的主键都置空,嗯,能满足我的需求。不知道还有没有更好的方法?
对List<Map>里的map的某个属性重复的值进行处理的方法的更多相关文章
- 用jQuery在IFRAME里取得父窗口的某个元素的值
收集网上的一些示例: 用jQuery在IFRAME里取得父窗口的某个元素的值 只好用DOM方法与jquery方法结合的方式实现了 1.在父窗口中操作 选中IFRAME中的所有单选钮 $(window. ...
- 递归将Map里的字段名由驼峰转为下划线
导航 定位 概述 算法设计 递归技巧 代码实现 定位 本文适合于想要使用Java递归地将Map里的Key字段名从驼峰转为下划线,或者想了解如何处理任意递归的Map结构的筒鞋. 概述 在进行多语言混合编 ...
- [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- C++中基于Crt的内存泄漏检测(重载new和delete,记录在Map里)
尽管这个概念已经让人说滥了 ,还是想简单记录一下, 以备以后查询. #ifdef _DEBUG#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FIL ...
- mybatia的mypper.xml文件,参数类型为map,map里有一个键值对的值为数组,如何解析,例子可供参考,接上文,发现更简便的方法,不必传数组,只需传字符串用逗号隔开即可
是这样的 先看参数 map.put("orgId", "1818"); map.put("childDeps", "1000,10 ...
- Java实现递归将嵌套Map里的字段名由驼峰转为下划线
摘要: 使用Java语言递归地将Map里的字段名由驼峰转下划线.通过此例可以学习如何递归地解析任意嵌套的List-Map容器结构. 难度:初级 概述 在进行多语言混合编程时,由于编程规范的不同, 有时 ...
- Go语言 判断key是否在map里 if _, ok := map[key]; ok
if val, ok := map[key]; ok { //do something here } 如果key在map里 val 被赋值map[key] ok 是true 否则val得到相应类型的零 ...
- java里遍历map的常见方式
public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...
- 获取map中的一个value值以及遍历map获得map里所有key、value的值
前言: 1.声明一个map: Map map = new HashMap();2.向map中放值,注意:map是key-value的形式存放的.如: map.put(”sa”,”dd”); 3.从ma ...
随机推荐
- WCF服务的Web HTTP方式
NET 3.5以后,WCF中提供了WebGet的方式,允许通过url的形式进行Web 服务的访问.现将WCF服务设置步骤记录如下: endpoint通讯协议设置成 webHttpBinding en ...
- POJ 1840:Eqs
Description Consider equations having the following form: a1x13+ a2x23+ a3x33+ a4x43+ a5x53= The coe ...
- 如何使用 Issue 管理软件项目?
软件开发(尤其是商业软件)离不开项目管理,Issue 是最通用的管理工具之一.
- The timeout period elapsed prior to completion of the operation or the server is not responding.
问题:更新数据的状态值时,部分报出如下异常: 即时有成功更新,时有报错问题出现. 在LOG中发现成功更新的数据,存在更新时间过长问题,将近30秒(EF默认的CommandTimeout为30秒): 代 ...
- TP5.1框架中的模型关联
一对一关联 hasOne('关联模型','外键','主键'); 关联模型(必须):关联的模型名或者类名 外键:默认的外键规则是当前模型名(不含命名空间,下同)+_id ,例如user_id 主键:当前 ...
- php 连接webservice接口
首先谢谢前人, 引用:https://www.cnblogs.com/xbxxf/p/10103430.html 本来说对接接口,我以为是一扮curl接口形式,结果最后给接口锝时候才告诉我是webse ...
- 适合新手的160个creakme(二)
先跑一下,然后找出关键字符串 关键字符串是You Get Wrong和Try Again,不过IDA好像识别不出来这个字符串,在Ollydbg中右键Search For,寻找所有字符串,可以找到这些字 ...
- [Tarjan系列] Tarjan算法求无向图的双连通分量
这篇介绍如何用Tarjan算法求Double Connected Component,即双连通分量. 双联通分量包括点双连通分量v-DCC和边连通分量e-DCC. 若一张无向连通图不存在割点,则称它为 ...
- intellij IDE 破解 简单 License server 法
http://idea.iteblog.com/key.php
- 对vuex分模块管理
为什么要分模块: 由于使用单一状态树,应用的所有状态会集中到一个比较大的对象.当应用变得非常复杂时,store 对象就有可能变得相当臃肿.为了解决以上问题,Vuex 允许我们将 store 分割成模块 ...