Java实现过滤掉map集合中key或value为空的值示例
作者:May的博客 时间:2021-05-25 10:26:17
本文实例讲述了Java实现过滤掉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 被创建之后会建立一个指向原来对象的单链索引表,当原来的对象数量发生变化时,这个索引表的内容不会同步改变,
* 所以当索引指针往后移动的时候就找不到要迭代的对象,所以按照 fail-fast 原则 Iterator 会马上抛出 java.util.ConcurrentModificationException 异常。
* 所以 Iterator 在工作的时候是不允许被迭代的对象被改变的。
* 但你可以使用 Iterator 本身的方法 remove() 来删除对象, Iterator.remove() 方法会在删除当前迭代对象的同时维护索引的一致性。
* @param obj
* @param iterator
*/
private static void remove(Object obj,Iterator iterator){
if(obj instanceof String){
String str = (String)obj;
if(isEmpty(str)){ //过滤掉为null和""的值 主函数输出结果map:{2=BB, 1=AA, 5=CC, 8= }
// if("".equals(str.trim())){ //过滤掉为null、""和" "的值 主函数输出结果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);//输出结果:{2=BB, 1=AA, 7=, 6=null, 5=CC, 8= }
removeNullEntry(map);
System.out.println(map);
}
}
运行结果:
{1=AA, 2=BB, 5=CC, 6=null, 7=, 8= }
{1=AA, 2=BB, 5=CC, 8= }
希望本文所述对大家java程序设计有所帮助。
来源:https://blog.csdn.net/lmb55/article/details/64551373
标签:Java,过滤,map集合
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java字符串查找的三种方式
2023-11-18 22:00:30
Spring启动过程中实例化部分代码的分析之Bean的推断构造方法
2022-08-26 02:00:07
C#子线程执行完后通知主线程的方法
2022-02-26 20:15:40
![](https://img.aspxhome.com/file/2023/4/88654_0s.jpg)
idea的easyCode的 MybatisPlus模板的配置详解
2022-04-18 21:01:29
java实现人员信息管理系统
2023-11-02 05:21:31
![](https://img.aspxhome.com/file/2023/5/58425_0s.jpg)
C# SQlite操作方法小结
2021-10-01 15:56:09
Unity 百度AI实现Logo商标识别
2023-06-09 17:04:26
![](https://img.aspxhome.com/file/2023/5/84465_0s.jpg)
Linux中Java开发常用软件安装方法总结
2022-03-11 16:21:03
![](https://img.aspxhome.com/file/2023/2/85912_0s.png)
Java的运算符和程序逻辑控制你了解吗
2023-01-19 10:01:59
Mybatis使用JSONObject接收数据库查询的方法
2023-01-17 05:10:43
![](https://img.aspxhome.com/file/2023/7/62647_0s.png)
一文解决springboot打包成jar文件无法正常运行的问题
2021-11-03 14:54:28
![](https://img.aspxhome.com/file/2023/0/67120_0s.png)
Java调用接口如何获取json数据解析后保存到数据库
2023-11-16 15:01:36
![](https://img.aspxhome.com/file/2023/8/59058_0s.png)
3分钟纯 Java 注解搭个管理系统的示例代码
2023-05-29 07:57:46
![](https://img.aspxhome.com/file/2023/7/65777_0s.jpg)
面试官:详细谈谈Java对象的4种引用方式
2022-09-19 04:52:20
C#的TimeSpan案例详解
2023-11-20 11:34:52
![](https://img.aspxhome.com/file/2023/7/88317_0s.png)
Java使用join方法暂停当前线程
2023-11-03 04:32:31
在Spring Boot中加载初始化数据的实现
2023-08-18 10:01:44
c#生成站点地图(SiteMapPath)文件示例程序
2022-08-03 02:26:55
SpringBoot返回Json对象报错(返回对象为空{})
2022-06-30 03:31:19
![](https://img.aspxhome.com/file/2023/2/61642_0s.png)
java虚拟机钩子关闭函数addShutdownHook的操作
2021-10-18 00:58:25
![](https://img.aspxhome.com/file/2023/6/61576_0s.jpg)