亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Java8中使用stream過濾map集合

發布時間:2021-05-19 15:41:21 來源:億速云 閱讀:1582 作者:Leah 欄目:編程語言

本篇文章為大家展示了如何在Java8中使用stream過濾map集合,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

原有方法說明

主要處理過濾條件Map對象,過濾掉了null和空字符串 等操作

如何在Java8中使用stream過濾map集合

這里我簡單畫了個圖,對這個過程總結

如何在Java8中使用stream過濾map集合

1.利用filter對null和空字符串進行過濾

2.利用map進行對于Stream中包含的元素使用給定的轉換函數進行轉換操作

3.collect進行聚合成map

由于公司的代碼不合適自己展示,我這里自己仿照公司的寫了個類似的簡單方法,然后一步一步優化

自定義map工具類處理方法

//這里的代碼和原先的代碼相比做了修改,去掉了map進行對于Stream中包含的元素使用給定的轉換函數進行轉換操作

public static Map<String, Object> parseMapForFilter(Map<String, Object> map) {
 if (map == null) {
  return null;
 } else {
  map = map.entrySet().stream()
   .filter((e) -> checkValue(e.getValue()))
   .collect(Collectors.toMap(
    (e) -> (String) e.getKey(),
    (e) -> e.getValue()
   ));
 }
 return map;
 }
 
private static boolean checkValue(Object object) {

 if (object instanceof String && "".equals(object)) {
  return false;
 }

 if (null == object) {
  return false;
 }

 return true;
 }

測試下

 public static void main(String[] args) {
 Map<String,Object> params = new HashMap<>(16);

 params.put("a","");
 params.put("b",null);
 params.put("c","c");

 params = MapUtil.parseMapForFilter(params);
 System.out.println(params);
 System.out.println(MapUtil.parseMapForFilter(null));
 }

輸出結果

{c=c}
null

優化parseMapForFilter 方法,加入Optional類

public static Map<String, Object> parseMapForFilterByOptional(Map<String, Object> map) {

 return Optional.ofNullable(map).map(
  (v) -> {
   Map params = v.entrySet().stream()
    .filter((e) -> checkValue(e.getValue()))
    .collect(Collectors.toMap(
     (e) -> (String) e.getKey(),
     (e) -> e.getValue()
    ));

   return params;
  }
 ).orElse(null);
 }

是不是感覺更清晰了呢?

測試一下

 public static void main(String[] args) {
 Map<String, Object> params = new HashMap<>(16);

 params.put("a", "");
 params.put("b", null);
 params.put("c", "c");

 params = MapUtil.parseMapForFilterByOptional(params);

 System.out.println(params);
 System.out.println(MapUtil.parseMapForFilterByOptional(null));
 }

結果

{c=c}
null
優化checkValue方法
 private static boolean checkValueByOptional(Object object) {
 return (Boolean) Optional.ofNullable(object)
  .filter((e) -> e instanceof String && e.equals("") ? false : true)
  .orElse(false);
 }

上述內容就是如何在Java8中使用stream過濾map集合,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

九龙县| 凤台县| 平安县| 金湖县| 隆化县| 和顺县| 府谷县| 横峰县| 库车县| 蚌埠市| 榆中县| 邵阳县| 霸州市| 松滋市| 竹北市| 安泽县| 大冶市| 陕西省| 定兴县| 遂昌县| 张家港市| 正蓝旗| 祁门县| 社旗县| 湖北省| 天柱县| 灌阳县| 夏邑县| 朔州市| 景谷| 蕉岭县| 莲花县| 家居| 龙里县| 荣成市| 瓦房店市| 紫阳县| 肥东县| 云南省| 喀喇沁旗| 灌阳县|