当前位置: 首页 > news >正文

MapUtils常用方法

1、摘要

MapUtils是一个用于处理Map对象的实用工具类,它提供了许多方便的方法来执行常见的操作,如获取值、设置默认值、合并Map等。本文将介绍MapUtils的常见用法,以帮助你更轻松地处理Map数据。

2、前言

在Java编程中,Map是一种常用的数据结构,用于存储键值对。然而,处理Map数据时,经常需要进行一些繁琐的操作,例如检查键是否存在,获取键对应的值,或者在键不存在时设置默认值。为了简化这些任务,Apache Commons Lang库提供了一个实用工具类MapUtils

3、配置方法

要使用MapUtils,首先需要导入Apache Commons Lang库。你可以通过以下方式配置你的Java项目来使用MapUtils:

  1. 下载Apache Commons Lang库,并将其添加到你的项目中。
  2. 使用构建工具如MavenGradle,在项目的依赖中添加Apache Commons Lang库。
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.1</version>
</dependency>

4、方法

可以从指定map中获取常用基础类型的值,都会判断map,map为null返回null,get结果为null返回null: 

修饰符和返回类型方法描述
static BooleangetBoolean(Map<? super K,?> map, K key)从Map获取Boolean
static BooleangetBoolean(Map<? super K,?> map, K key, Boolean defaultValue)将结果转换为Boolean,如果转换失败则使用默认值
static booleangetBooleanValue(Map<? super K,?> map, K key)从Map获取boolean。
static booleangetBooleanValue(Map<? super K,?> map, K key, boolean defaultValue)如果转换失败,则使用默认值
static DoublegetDouble(Map<? super K,?> map, K key)从Map获取Double
static DoublegetDouble(Map<? super K,?> map, K key, Double defaultValue)将结果转换为Double,如果转换失败则使用默认值
static doublegetDoubleValue(Map<? super K,?> map, K key)从Map获取double
static doublegetDoubleValue(Map<? super K,?> map, K key, double defaultValue)如果转换失败,则使用默认值
static FloatgetFloat(Map<? super K,?> map, K key)从Map获取Float
static FloatgetFloat(Map<? super K,?> map, K key, Float defaultValue)将结果转换为Float,如果转换失败则使用默认值
static floatgetFloatValue(Map<? super K,?> map, K key)从Map获取float
static floatgetFloatValue(Map<? super K,?> map, K key, float defaultValue)如果转换失败,则使用默认值
static IntegergetInteger(Map<? super K,?> map, K key)从Map获取Integer
static IntegergetInteger(Map<? super K,?> map, K key, Integer defaultValue)将结果转换为Integer,如果转换失败则使用默认值
static intgetIntegerValue(Map<? super K,?> map, K key)从Map获取int
static intgetIntegerValue(Map<? super K,?> map, K key, int defaultValue)如果转换失败,则使用默认值
static LonggetLong(Map<? super K,?> map, K key)从Map获取Long
static LonggetLong(Map<? super K,?> map, K key, Long defaultValue)将结果转换为Long,如果转换失败则使用默认值
static longgetLongValue(Map<? super K,?> map, K key)从Map获取long
static longgetLongValue(Map<? super K,?> map, K key, long defaultValue)如果转换失败,则使用默认值
static StringgetString(Map<? super K,?> map, K key)从Map获取String
static StringgetString(Map<? super K,?> map, K key, String defaultValue)

将结果转换为String,如果转换失败则使用默认值

5、常用方法

5.1、isNotEmpty(): 是否不为空

用于检查Map是否不为空,即包含至少一个键值对。

import org.apache.commons.lang3.MapUtils;
import java.util.HashMap;
import java.util.Map;public class MapUtilsDemo {public static void main(String[] args) {Map<String, String> map = new HashMap<>();map.put("key1", "value1");boolean isNotEmpty = MapUtils.isNotEmpty(map);System.out.println("Map is not empty: " + isNotEmpty);}
}

5.2、isEmpty(): 是否为空

用于检查Map是否为空,即不包含任何键值对。

import org.apache.commons.lang3.MapUtils;
import java.util.HashMap;
import java.util.Map;public class MapUtilsDemo {public static void main(String[] args) {Map<String, String> map = new HashMap<>();boolean isEmpty = MapUtils.isEmpty(map);System.out.println("Map is empty: " + isEmpty);}
}

5.3、putAll(): 添加所有元素

将另一个Map的所有键值对添加到目标Map中。

import org.apache.commons.lang3.MapUtils;
import java.util.HashMap;
import java.util.Map;public class MapUtilsDemo {public static void main(String[] args) {Map<String, String> sourceMap = new HashMap<>();sourceMap.put("key1", "value1");sourceMap.put("key2", "value2");Map<String, String> targetMap = new HashMap<>();MapUtils.putAll(targetMap, sourceMap);System.out.println("Target Map: " + targetMap);}
}

5.4、getString(): 获取String类型的值

从Map中获取String类型的值,可以指定默认值。

import org.apache.commons.lang3.MapUtils;
import java.util.HashMap;
import java.util.Map;public class MapUtilsDemo {public static void main(String[] args) {Map<String, Object> map = new HashMap<>();map.put("name", "John");String value = MapUtils.getString(map, "name", "Unknown");System.out.println("Name: " + value);}
}

5.5、getObject(): 获取Object类型的值

从Map中获取Object类型的值,可以指定默认值。

import org.apache.commons.lang3.MapUtils;
import java.util.HashMap;
import java.util.Map;public class MapUtilsDemo {public static void main(String[] args) {Map<String, Object> map = new HashMap<>();map.put("age", 30);Object value = MapUtils.getObject(map, "age", null);System.out.println("Age: " + value);}
}

5.6、getInteger(): 获取Integer类型的值

从Map中获取Integer类型的值,可以指定默认值。

import org.apache.commons.lang3.MapUtils;
import java.util.HashMap;
import java.util.Map;public class MapUtilsDemo {public static void main(String[] args) {Map<String, Object> map = new HashMap<>();map.put("count", 42);Integer value = MapUtils.getInteger(map, "count", 0);System.out.println("Count: " + value);}
}

5.7、EMPTY_MAP: 获取一个不可修改的空类型Map

 获取一个不可修改的空Map,通常用于表示空数据。

import org.apache.commons.lang3.MapUtils;public class MapUtilsDemo {public static void main(String[] args) {Map<String, String> emptyMap = MapUtils.EMPTY_MAP;System.out.println("Empty Map: " + emptyMap);}
}

5.8、unmodifiableMap: 获取一个不可修改的Map

获取一个不可修改的Map,不能新增或删除键值对。

import org.apache.commons.lang3.MapUtils;
import java.util.HashMap;
import java.util.Map;public class MapUtilsDemo {public static void main(String[] args) {Map<String, String> mutableMap = new HashMap<>();mutableMap.put("key1", "value1");Map<String, String> unmodifiableMap = MapUtils.unmodifiableMap(mutableMap);// This will throw an UnsupportedOperationExceptionunmodifiableMap.put("key2", "value2");}
}

5.9、unmodifiableSortedMap: 获取一个不可修改的有序的Map

 获取一个不可修改的有序Map,同样不能新增或删除键值对。

import org.apache.commons.lang3.MapUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;public class MapUtilsDemo {public static void main(String[] args) {Map<String, String> mutableMap = new TreeMap<>();mutableMap.put("key1", "value1");Map<String, String> unmodifiableMap = MapUtils.unmodifiableSortedMap(mutableMap);// This will throw an UnsupportedOperationExceptionunmodifiableMap.put("key2", "value2");}
}

5.10、fixedSizeMap: 获取一个固定长度的Map

获取一个固定长度的Map,不能新增或删除键值对,也不能修改已存在的键值对数量。

import org.apache.commons.lang3.MapUtils;
import java.util.Map;public class MapUtilsDemo {public static void main(String[] args) {Map<String, String> fixedSizeMap = MapUtils.fixedSizeMap(new HashMap<>());fixedSizeMap.put("key1", "value1"); // This will throw an UnsupportedOperationException}
}

5.11、multiValueMap: 获取一个多值的Map

获取一个多值的Map,即一个键可以对应多个值。

import org.apache.commons.lang3.MapUtils;
import org.apache.commons.collections4.MultiMap;
import org.apache.commons.collections4.map.MultiValueMap;public class MapUtilsDemo {public static void main(String[] args) {MultiMap<String, String> multiValueMap = new MultiValueMap<>();multiValueMap.put("key1", "value1");multiValueMap.put("key1", "value2");System.out.println("Multi-Value Map: " + multiValueMap);}
}

5.12、invertMap: 返回一个键值对调的Map

 返回一个新的Map,其中键和值互换。

import org.apache.commons.lang3.MapUtils;
import java.util.HashMap;
import java.util.Map;public class MapUtilsDemo {public static void main(String[] args) {Map<String, Integer> originalMap = new HashMap<>();originalMap.put("one", 1);originalMap.put("two", 2);Map<Integer, String> invertedMap = MapUtils.invertMap(originalMap);System.out.println("Inverted Map: " + invertedMap);}
}

5.13、predicatedMap(): 返回一个满足predicate条件的Map

返回一个新的Map,其中的键值对满足指定条件。

import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.map.PredicatedMap;
import org.apache.commons.lang3.MapUtils;import java.util.HashMap;
import java.util.Map;public class MapUtilsDemo {public static void main(String[] args) {Map<String, Integer> originalMap = new HashMap<>();originalMap.put("one", 1);originalMap.put("two", 2);Predicate<String> keyPredicate = key -> key.startsWith("t");Map<String, Integer> predicatedMap = MapUtils.predicatedMap(originalMap, keyPredicate, null);System.out.println("Predicated Map: " + predicatedMap);}
}

5.14、 lazyMap: 返回一个lazy的Map

返回一个延迟加载的Map,在需要时才创建值。

import org.apache.commons.collections4.Factory;
import org.apache.commons.collections4.map.LazyMap;
import org.apache.commons.lang3.MapUtils;import java.util.HashMap;
import java.util.Map;public class MapUtilsDemo {public static void main(String[] args) {Factory<String> valueFactory = () -> "Lazy Value";Map<String, String> lazyMap = LazyMap.lazyMap(new HashMap<>(), valueFactory);// Lazy value is only created when accessedString value = lazyMap.get("key");System.out.println("Lazy Map Value: " + value);}
}
import org.apache.commons.lang3.MapUtils;
import org.junit.Assert;import java.util.HashMap;
import java.util.Map;public class MapUtilsDemo {public static void main(String[] args) {// 定义一个空的Map和一个包含一些键值对的MapMap<String, Object> nullMap = null;Map<String, Object> map = new HashMap<>();map.put("user", new User());map.put("boolean", true);map.put("integer", 5);// 使用MapUtils.getBoolean// 预期:从Map中获取"boolean"键对应的布尔值,应返回trueAssert.assertTrue(MapUtils.getBoolean(map, "boolean"));// 预期:从Map中获取"user"键对应的布尔值,但转换失败,应返回默认值falseAssert.assertFalse(MapUtils.getBoolean(map, "user", false));// 预期:目标map为null,无法获取值,应返回nullAssert.assertNull(MapUtils.getBoolean(nullMap, "boolean"));// 预期:目标map为null,无法获取值,应返回默认值falseAssert.assertFalse(MapUtils.getBoolean(nullMap, "boolean", false));// 使用MapUtils.getBooleanValue// 预期:从Map中获取"boolean"键对应的布尔值,应返回trueAssert.assertTrue(MapUtils.getBooleanValue(map, "boolean"));// 预期:从Map中获取"user"键对应的布尔值,但转换失败,应返回默认值falseAssert.assertFalse(MapUtils.getBooleanValue(map, "user", false));// 预期:目标map为null,无法获取值,应返回falseAssert.assertFalse(MapUtils.getBooleanValue(nullMap, "boolean"));// 预期:目标map为null,无法获取值,应返回默认值falseAssert.assertFalse(MapUtils.getBooleanValue(nullMap, "boolean", false));// 使用MapUtils.getInteger// 预期:从Map中获取"integer"键对应的整数值,应返回Integer类型的值5Assert.assertEquals(Integer.valueOf(5), MapUtils.getInteger(map, "integer"));// 预期:从Map中获取"integer"键对应的整数值,但转换失败,应返回默认值5Assert.assertEquals(Integer.valueOf(5), MapUtils.getInteger(map, "integer", 5));// 预期:目标map为null,无法获取值,应返回nullAssert.assertNull(MapUtils.getInteger(nullMap, "integer"));// 预期:目标map为null,无法获取值,应返回默认值5Assert.assertEquals(Integer.valueOf(5), MapUtils.getInteger(nullMap, "integer", 5));// 使用MapUtils.getIntValue// 预期:从Map中获取"integer"键对应的整数值,应返回int类型的值5Assert.assertEquals(5, MapUtils.getIntValue(map, "integer"));// 预期:从Map中获取"user"键对应的整数值,但转换失败,应返回默认值5Assert.assertEquals(5, MapUtils.getIntValue(map, "user", 5));// 预期:目标map为null,无法获取值,应返回0(int的默认值)Assert.assertEquals(0, MapUtils.getIntValue(nullMap, "integer"));// 预期:目标map为null,无法获取值,应返回默认值5Assert.assertEquals(5, MapUtils.getIntValue(nullMap, "integer", 5));}// 一个示例的用户类,用于模拟Map中的对象static class User {// 你可以在这里添加用户属性和行为}
}

http://www.lryc.cn/news/412138.html

相关文章:

  • 自定义PasswordEditText控件,在手机字体应用后,字体样式未发生改变
  • 学习打卡第31天
  • opencascade AIS_TexturedShape源码学习 贴纹理
  • C# winform 串口读取字节流,MB级别字节流
  • 创建一个简单的单链表
  • 15.1 Zookeeper简介安装及基础使用
  • 详细说明Java中Map和Set接口的使用方法
  • CSS3 scale 适配
  • SX_初识GitLab_1
  • 这才是 PHP 高性能框架 Workerman 的立命之本
  • Python——记录pip问题(解决下载慢、升级失败问题)
  • Windows Server 2025 Preview 部署 Ⅰ—— ISO下载和硬件要求
  • AI2-CUDA、CuDNN、TensorRT的详细安装教程
  • TCP连接中重复使用了两个相同的端口怎么办
  • 如何自定义异常
  • C++中的依赖注入
  • CSS平面转换-平移
  • Linux-3:Shell编程——基础语法(0-50%)
  • C++ --> string类模拟实现(附源码)
  • 基于PHP+MySQL组合开发的微信活动投票小程序源码系统 带完整的安装代码包以及搭建部署教程
  • 利用Arcgis设置分式标注(分子分母标注)
  • 大麦网抢票攻略:使用Python Selenium实现
  • Navicat 在整个数据库中查找字符
  • Python基础—处理时间问题
  • 如何选择合适的自动化测试工具!
  • 数字图像边缘曲率计算及特殊点检测
  • python map
  • 每日一练 - NFV部署应用环境
  • 031-GeoGebra中级篇-GeoGebra的布尔值
  • 基于Debian用户安装星火商店