溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java中List如何根據(jù)map的某個(gè)key去重

發(fā)布時(shí)間:2021-08-07 11:01:25 來源:億速云 閱讀:218 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)Java中List如何根據(jù)map的某個(gè)key去重的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

代碼

   /**
   * 根據(jù)map中的某個(gè)key 去除List中重復(fù)的map
   * @author shijing
   * @param list
   * @param mapKey
   * @return
   */
  public static List<Map<String, Object>> removeRepeatMapByKey(List<Map<String, Object>> 
      list, String mapKey){
    if (CollectionUtils.isNullOrEmpty(list)) return null;
     //把list中的數(shù)據(jù)轉(zhuǎn)換成msp,去掉同一id值多余數(shù)據(jù),保留查找到第一個(gè)id值對(duì)應(yīng)的數(shù)據(jù)
    List<Map<String, Object>> listMap = new ArrayList<>();
    Map<String, Map> msp = new HashMap<>();
    for(int i = list.size()-1 ; i>=0; i--){
      Map map = list.get(i);
      String id = (String)map.get(mapKey);
      map.remove(mapKey);
      msp.put(id, map);
    }
    //把msp再轉(zhuǎn)換成list,就會(huì)得到根據(jù)某一字段去掉重復(fù)的數(shù)據(jù)的List<Map>
    Set<String> mspKey = msp.keySet();
    for(String key: mspKey){
      Map newMap = msp.get(key);
      newMap.put(mapKey, key);
      listMap.add(newMap);
    }
    return listMap;
  }

測試:

public static void main(String[] args) {
    Map<String, Map> msp = new HashMap<String, Map>();
    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    List<Map<String, Object>> listMap = new ArrayList<Map<String,Object>>();
    Map<String, Object> map1 = new HashMap<String, Object>();
    map1.put("id", "1123");
    map1.put("name", "張三");
    Map<String, Object> map2 = new HashMap<String, Object>();
    map2.put("id", "2");
    map2.put("name", "李四");
    Map<String, Object> map3 = new HashMap<String, Object>();
    map3.put("id", "1123");
    map3.put("name", "王五");
    Map<String, Object> map4 = new HashMap<String, Object>();
    map4.put("id", "3");
    map4.put("name", "趙六");
    list.add(map1);
    list.add(map2);
    list.add(map3);
    list.add(map4);
    System.out.println("初始數(shù)據(jù):" + list.toString());
    System.out.println("去重之后:" + removeRepeatMapByKey(list,"id"));
  }

結(jié)果:

初始數(shù)據(jù):[{name=張三, id=1123}, {name=李四, id=2}, {name=王五, id=1123}, {name=趙六, id=3}]
去重之后:[{name=李四, id=2}, {name=趙六, id=3}, {name=張三, id=1123}]

感謝各位的閱讀!關(guān)于“Java中List如何根據(jù)map的某個(gè)key去重”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI