• 对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;
    }
    }

    对重复主键进行处理,取第一个,剩余的主键都置空,嗯,能满足我的需求。不知道还有没有更好的方法?

  • 相关阅读:
    Linux 安装网络yum地址
    MYSQL登录错误:mysqladmin: connect to server at ‘localhost’ failed
    linux 中截取字符串
    screen 调到后台使用
    Yum 安装memcached 与缓存清空
    LAMP 环境搭建
    DELL--R420 CPU报警“CPU0000 cpu2 internal error (IERR)contact support”
    解决vim粘贴时格式混乱的问题
    DELL 管理软件安装
    windows 使用SVN命令
  • 原文地址:https://www.cnblogs.com/rongyao/p/11261601.html
Copyright © 2020-2023  润新知