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

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

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

本文實(shí)例講述了Java實(shí)現(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 是工作在一個(gè)獨(dú)立的線程中,并且擁有一個(gè) mutex 鎖。
   * Iterator 被創(chuàng)建之后會(huì)建立一個(gè)指向原來對象的單鏈索引表,當(dāng)原來的對象數(shù)量發(fā)生變化時(shí),這個(gè)索引表的內(nèi)容不會(huì)同步改變,
   * 所以當(dāng)索引指針往后移動(dòng)的時(shí)候就找不到要迭代的對象,所以按照 fail-fast 原則 Iterator 會(huì)馬上拋出 java.util.ConcurrentModificationException 異常。
   * 所以 Iterator 在工作的時(shí)候是不允許被迭代的對象被改變的。
   * 但你可以使用 Iterator 本身的方法 remove() 來刪除對象, Iterator.remove() 方法會(huì)在刪除當(dāng)前迭代對象的同時(shí)維護(hù)索引的一致性。
   * @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);
  }
}

運(yùn)行結(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é)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    基于web項(xiàng)目log日志指定輸出文件位置配置方法

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

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

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

    Java連接SqlServer錯(cuò)誤的完美解決方法

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

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

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

最新評論