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的某个属性重复的值进行处理的方法的更多相关文章

  1. 用jQuery在IFRAME里取得父窗口的某个元素的值

    收集网上的一些示例: 用jQuery在IFRAME里取得父窗口的某个元素的值 只好用DOM方法与jquery方法结合的方式实现了 1.在父窗口中操作 选中IFRAME中的所有单选钮 $(window. ...

  2. 递归将Map里的字段名由驼峰转为下划线

    导航 定位 概述 算法设计 递归技巧 代码实现 定位 本文适合于想要使用Java递归地将Map里的Key字段名从驼峰转为下划线,或者想了解如何处理任意递归的Map结构的筒鞋. 概述 在进行多语言混合编 ...

  3. [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. C++中基于Crt的内存泄漏检测(重载new和delete,记录在Map里)

    尽管这个概念已经让人说滥了 ,还是想简单记录一下, 以备以后查询. #ifdef _DEBUG#define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FIL ...

  5. mybatia的mypper.xml文件,参数类型为map,map里有一个键值对的值为数组,如何解析,例子可供参考,接上文,发现更简便的方法,不必传数组,只需传字符串用逗号隔开即可

    是这样的 先看参数 map.put("orgId", "1818"); map.put("childDeps", "1000,10 ...

  6. Java实现递归将嵌套Map里的字段名由驼峰转为下划线

    摘要: 使用Java语言递归地将Map里的字段名由驼峰转下划线.通过此例可以学习如何递归地解析任意嵌套的List-Map容器结构. 难度:初级 概述 在进行多语言混合编程时,由于编程规范的不同, 有时 ...

  7. 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得到相应类型的零 ...

  8. java里遍历map的常见方式

    public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...

  9. 获取map中的一个value值以及遍历map获得map里所有key、value的值

    前言: 1.声明一个map: Map map = new HashMap();2.向map中放值,注意:map是key-value的形式存放的.如: map.put(”sa”,”dd”); 3.从ma ...

随机推荐

  1. 【转帖】Linux 桌面进化史

    Linux 桌面进化史 https://www.oschina.net/news/109440/how-linux-desktop-grown 与之前认识到的一样 桌面最开始 是 施乐公司研发的. 后 ...

  2. [转帖]iphone11的部分参数 UX

    iPhone 11将于9月11号凌晨发布 靠谱爆料在这 https://www.cnbeta.com/articles/tech/884199.htm iphone的分辨率 非常高.. iphone ...

  3. 2.5路由网关:Zuul

    在原有的工程上,创建一个新的工程 创建service-zuul工程 其pom.xml文件如下: <?xml version="1.0" encoding="UTF- ...

  4. error LNK2001: unresolved external symbol __imp__closesocket@4

    环境:Visual C++6.0 问题:链接错误 描述: Linking... NetSrv.obj : error LNK2001: unresolvedexternal symbol __imp_ ...

  5. print() 默认是打印完字符串会自动添加一个换行符

    可以使用end="  " 参数告诉 print() 用空格代替换行 for i in range(1,10): ... print(i,end=' ') ... 1 2 3 4 5 ...

  6. RBAC授权

    RBAC RBAC使用rbac.authorization.k8s.io API Group 来实现授权决策,允许管理员通过 Kubernetes API 动态配置策略,要启用RBAC,需要在 api ...

  7. 怎样初始化XMLHttpRequest实例对象xhr

    xhr.open() 接收5个参数, 用于初始化一个http请求, 它接收5个参数: 1. method: 请求类型; 2. url: 请求的url; 3. async: 是否为异步, 默认为true ...

  8. poj 1224

    题意:有一个5 * 6的矩阵,每个位置表示灯,1表示灯亮,0表示灯灭. 然后如果选定位置i,j点击,则位置i,j和其上下左右的灯的状态都会反转. 现在要你求出一个5 * 6的矩阵,1表示这个灯被点击过 ...

  9. set-cookie中的SameSite属性

    原文:set-cookie中的SameSite属性 再见,CSRF:讲解set-cookie中的SameSite属性 2016-04-14 13:18:42 来源:360安全播报 作者:暗羽喵 阅读: ...

  10. Cache的一些总结

    输出缓存 这是最简单的缓存类型,它保存发送到客户端的页面副本,当下一个客户端发送相同的页面请求时,此页面不会重新生成(在缓存有限期内),而是从缓存中获取该页面:当然由于缓存过期或被回收,这时页面会重新 ...