zoukankan      html  css  js  c++  java
  • 对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;
    }
    }

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

  • 相关阅读:
    #动态规划 0-1背包问题空间复杂度优化
    #动态规划 0-1背包问题思路概述
    #动态规划 LeetCode 337 打家劫舍 III
    #动态规划 LeetCode 213 打家劫舍 II
    #动态规划 LeetCode 198 打家劫舍
    #动态规划 LeetCode 63 不同路径 II
    #动态规划 LeetCode 62 不同路径
    #动态规划 LeetCode 279 完全平方数
    #动态规划 LeetCode 343 整数拆分
    #动态规划 LeetCode 64 最小路径和
  • 原文地址:https://www.cnblogs.com/rongyao/p/11261601.html
Copyright © 2011-2022 走看看