欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)過濾掉map集合中key或value為空的值示例

 更新時間:2018年06月26日 08:53:55   作者:May的博客  
這篇文章主要介紹了Java實現(xiàn)過濾掉map集合中key或value為空的值,涉及java針對map的簡單遍歷、判斷、移除等相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Java實現(xiàn)過濾掉map集合中key或value為空的值。分享給大家供大家參考,具體如下:

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
 * 過濾掉map集合中key或value為空的值
 * @author lmb
 * @date 2017-3-14
 */
public class MapRemoveNullUtil {
  /**
   * 移除map中空key或者value空值
   * @param map
   */
  public static void removeNullEntry(Map map){
    removeNullKey(map);
    removeNullValue(map);
  }
  /**
   * 移除map的空key
   * @param map
   * @return
   */
  public static void removeNullKey(Map map){
    Set set = map.keySet();
    for (Iterator iterator = set.iterator(); iterator.hasNext();) {
      Object obj = (Object) iterator.next();
      remove(obj, iterator);
    }
  }
  /**
   * 移除map中的value空值
   * @param map
   * @return
   */
  public static void removeNullValue(Map map){
    Set set = map.keySet();
    for (Iterator iterator = set.iterator(); iterator.hasNext();) {
      Object obj = (Object) iterator.next();
      Object value =(Object)map.get(obj);
      remove(value, iterator);
    }
  }
  /**
   * 移除map中的空值
   *
   * Iterator 是工作在一個獨立的線程中,并且擁有一個 mutex 鎖。
   * Iterator 被創(chuàng)建之后會建立一個指向原來對象的單鏈索引表,當(dāng)原來的對象數(shù)量發(fā)生變化時,這個索引表的內(nèi)容不會同步改變,
   * 所以當(dāng)索引指針往后移動的時候就找不到要迭代的對象,所以按照 fail-fast 原則 Iterator 會馬上拋出 java.util.ConcurrentModificationException 異常。
   * 所以 Iterator 在工作的時候是不允許被迭代的對象被改變的。
   * 但你可以使用 Iterator 本身的方法 remove() 來刪除對象, Iterator.remove() 方法會在刪除當(dāng)前迭代對象的同時維護索引的一致性。
   * @param obj
   * @param iterator
   */
  private static void remove(Object obj,Iterator iterator){
    if(obj instanceof String){
      String str = (String)obj;
      if(isEmpty(str)){ //過濾掉為null和""的值 主函數(shù)輸出結(jié)果map:{2=BB, 1=AA, 5=CC, 8= }
//      if("".equals(str.trim())){ //過濾掉為null、""和" "的值 主函數(shù)輸出結(jié)果map:{2=BB, 1=AA, 5=CC}
        iterator.remove();
      }
    }else if(obj instanceof Collection){
      Collection col = (Collection)obj;
      if(col==null||col.isEmpty()){
        iterator.remove();
      }
    }else if(obj instanceof Map){
      Map temp = (Map)obj;
      if(temp==null||temp.isEmpty()){
        iterator.remove();
      }
    }else if(obj instanceof Object[]){
      Object[] array =(Object[])obj;
      if(array==null||array.length<=0){
        iterator.remove();
      }
    }else{
      if(obj==null){
        iterator.remove();
      }
    }
  }
  public static boolean isEmpty(Object obj){
    return obj == null || obj.toString().length() == 0;
  }
  public static void main(String[] args) {
    Map map = new HashMap();
    map.put(1, "AA");
    map.put("2", "BB");
    map.put("5", "CC");
    map.put("6",null);
    map.put("7", "");
    map.put("8", " ");
    System.out.println(map);//輸出結(jié)果:{2=BB, 1=AA, 7=, 6=null, 5=CC, 8= }
    removeNullEntry(map);
    System.out.println(map);
  }
}

運行結(jié)果:

{1=AA, 2=BB, 5=CC, 6=null, 7=, 8=  }
{1=AA, 2=BB, 5=CC, 8=  }

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • IDEA配置Maven并版本統(tǒng)一管理的實現(xiàn)

    IDEA配置Maven并版本統(tǒng)一管理的實現(xiàn)

    本文主要介紹了IDEA配置Maven并版本統(tǒng)一管理的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java注解方式之防止重復(fù)請求

    Java注解方式之防止重復(fù)請求

    這篇文章主要介紹了關(guān)于Java注解方式防止重復(fù)請求,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • idea2023設(shè)置啟動參數(shù)、單元測試啟動參數(shù)

    idea2023設(shè)置啟動參數(shù)、單元測試啟動參數(shù)

    在使用IDEA進行開發(fā)時,我們可以通過設(shè)置一些啟動參數(shù)來優(yōu)化開發(fā)環(huán)境的性能和體驗,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Java上傳文件錯誤java.lang.NoSuchMethodException的解決辦法

    Java上傳文件錯誤java.lang.NoSuchMethodException的解決辦法

    今天小編就為大家分享一篇關(guān)于Java上傳文件錯誤java.lang.NoSuchMethodException的解決辦法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 最新log4j2遠程代碼執(zhí)行漏洞(附解決方法)

    最新log4j2遠程代碼執(zhí)行漏洞(附解決方法)

    Apache?Log4j2?遠程代碼執(zhí)行漏洞攻擊代碼,該漏洞利用無需特殊配置,經(jīng)多方驗證,Apache?Struts2、Apache?Solr、Apache?Druid、Apache?Flink等均受影響,本文就介紹一下解決方法
    2021-12-12
  • Java通過反射訪問注解信息的方法示例

    Java通過反射訪問注解信息的方法示例

    這篇文章主要介紹了Java通過反射訪問注解信息的方法,結(jié)合實例形式分析了java基于反射訪問類成員方法注解信息的相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • 基于web項目log日志指定輸出文件位置配置方法

    基于web項目log日志指定輸出文件位置配置方法

    下面小編就為大家分享一篇基于web項目log日志指定輸出文件位置配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Spring?Cloud?Stream消息驅(qū)動組件使用方法介紹

    Spring?Cloud?Stream消息驅(qū)動組件使用方法介紹

    Spring?Cloud?Stream?消息驅(qū)動組件幫助我們更快速,更方便,更友好的去構(gòu)建消息驅(qū)動微服務(wù)的。當(dāng)時定時任務(wù)和消息驅(qū)動的?個對比。消息驅(qū)動:基于消息機制做一些事情
    2022-09-09
  • Java連接SqlServer錯誤的完美解決方法

    Java連接SqlServer錯誤的完美解決方法

    我們在做Java或者C#連接數(shù)據(jù)庫的時候,常常遇到連接SqlServer失敗的問題,明明檢查了好幾遍代碼沒問題了,還是連接不上,下面這篇文章主要給大家介紹了關(guān)于Java連接SqlServer錯誤的完美解決方法,需要的朋友可以參考下
    2023-04-04
  • Mybatis-Plus中分頁插件PaginationInterceptor的使用

    Mybatis-Plus中分頁插件PaginationInterceptor的使用

    我們在開發(fā)的過程中,經(jīng)常會遇到分頁操作,本文主要介紹了Mybatis-Plus中分頁插件PaginationInterceptor的使用,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06

最新評論