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

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

  • 相关阅读:
    使用auto_prepend_file和auto_append_file
    maven导入外部jar包的方法
    scala的多种集合的使用(3)之遍历集合的方法
    scala的多种集合的使用(4)之列表List(ListBuffer)的操作
    scala的多种集合的使用(2)之集合常用方法
    UltraEdit文本行数多变一和一边多
    scala的多种集合的使用(1)之集合层级结构与分类
    用Case类生成模板代码
    寻:IE总弹出广告窗口方法? Hello
    ASP.net中提示"分析器错误""未能加载类型" Hello
  • 原文地址:https://www.cnblogs.com/rongyao/p/11261601.html
Copyright © 2011-2022 走看看