`
tenght
  • 浏览: 51614 次
社区版块
存档分类
最新评论

[java]Map取值方法,其中取得多种值,避免null值转换

 
阅读更多
import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;


/**
 * <p>
 * Map取值方法,其中取得多种值,避免null值转换
 * </p>
 * @author hailan
 *
 */
public class MapGetterTool {
	
	private Map<String,Object> map;
	
	public MapGetterTool(Map<String,Object> map){
		this.map = map;
	}
	
	/**
	 * <p>
	 * 根据Key返回一个Double型
	 * </p>
	 * @param key
	 * @return Double
	 */
	public Double getDouble(String key){
		if(map.get(key)!=null){
			if(map.get(key) instanceof Double){
				return (Double)map.get(key);
			}else{
				return 0.0;
			}
		}else{
			return 0.00;
		}
	}
	
	/**
	 * <p>
	 * 根据Key返回一个String
	 * </p>
	 * @param key
	 * @return String
	 */
	public String getString(String key){
		if(map.get(key)!=null){
			if(map.get(key) instanceof String){
				return (String)map.get(key);
			}else{
				return null;
			}
		}else{
			return "";
		}
	}
	
	/**
	 * <p>
	 * 根据Key返回一个Date
	 * </p>
	 * @param key
	 * @return Date
	 */
	public Date getDate(String key){
		if(map.get(key)!=null){
			if(map.get(key) instanceof Date){
				return (Date)map.get(key);
			}else{
				return null;
			}
		}else{
			return null;
		}
	}
	
	/**
	 * <p>
	 * 根据Key返回一个Integer
	 * </p>
	 * @param key
	 * @return Integer
	 */
	public Integer getInteger(String key){
		if(map.get(key)!=null){
			if(map.get(key) instanceof Integer){
				return (Integer)map.get(key);
			}else{
				return null;
			}
		}else{
			return 0;
		}
	}
	
	/**
	 * <p>
	 * 根据一个Key返回一个Map<String,String>
	 * </p>
	 * @param key
	 * @return Map<String,String>
	 */
	@SuppressWarnings("unchecked")
	public Map<String,String> getMap(String key){
		if(map.get(key)!=null){
			if(map.get(key) instanceof Map){
				return (Map<String,String>)map.get(key);
			}else{
				return null;
			}
		}else{
			return null;
		}
	}
	
	/**
	 * <p>
	 * 根据key返回BigDecimal
	 * 如果为null,则返回 new BigDecimal(0)
	 * </p>
	 * @param key
	 * @return BigDecimal
	 */
	public BigDecimal getBigDecimal(String key){
		if(map.containsKey(key)){
			if(map.get(key) instanceof BigDecimal){
				return (BigDecimal)map.get(key);
			}else{
				return new BigDecimal(0);
			}
		}else{
			return new BigDecimal(0);
		}
	}

}

分享到:
评论

相关推荐

    使用Java反射机制将Map转换为Java对象,支持Boolean、Date类型

    要将Map转换为Java对象,我们首先需要一个目标类的Class对象,这通常可以通过`Class.forName()`方法实现。然后,我们遍历Map中的每个键值对,通过反射调用目标类的setter方法来设置属性值。对于Date和Boolean类型,...

    jackson 实体转json 为NULL或者为空不参加序列化(实例讲解)

    然而,在进行这种转换的过程中,常常会遇到一些问题,例如当Java对象的某个属性值为null时,我们可能不希望这个属性在JSON中出现。针对这个问题,本文将介绍两种方法,可以使得在使用Jackson进行序列化时,实体对象...

    Java面试测试题目2018张大成总结

    ### Java面试测试题目知识点...- Java中使用静态变量来模拟全局变量的行为,避免全局变量可能导致的问题。 #### 57. 如何将String类型转化成Number类型 - 使用`Integer.parseInt()`、`Double.parseDouble()`等方法。

    Java面试题-哈希.docx

    为了解决这些问题,Java提供了多种线程安全的`Map`实现,包括: - `Hashtable`:完全同步化的实现,但效率较低。 - `ConcurrentHashMap`:通过细粒度锁的方式实现高效并发访问。 - `Collections.synchronizedMap()`...

    Java面试笔试题目汇总 (2).pdf

    错误的用法是A和C选项,因为Map的实例化不能直接通过`new java.util.Map()`,且`put`方法不允许null键。正确的用法是B和D选项。 14. **异常处理**:异常处理是通过try-catch-finally块实现的,`try`必须与`catch`或...

    Java经典问题答案(带书签)

    - 变量不赋值与赋null的区别:未初始化的变量包含垃圾值,赋null的变量表示其引用不指向任何对象。 - 可变参数为什么要定义在参数列表的后面:Java允许在同一个方法中使用固定参数和可变参数,但可变参数必须是参数...

    Java面试笔试题目.docx

    13. **Map的使用**:Map接口的实现类不能直接通过`new java.util.Map()`创建实例,因为Map是一个接口。正确的方法是使用具体实现,如`new java.util.HashMap()`。因此,A选项错误。B选项创建了SortedMap的实例,但...

    java面试宝典2019

    集合是Java编程中常用的数据结构,包括List(如ArrayList、LinkedList)、Set(如HashSet、TreeSet)和Map(如HashMap、Hashtable)。它们各自有特定的应用场景和操作方法,例如ArrayList适合快速随机访问,而...

    Java面试笔试题目汇总.pdf

    对于`Map`的使用,`HashMap`和`TreeMap`都是`Map`的实现类,可以使用`put`方法添加元素,但传入`null`作为键或值可能会导致问题,具体取决于具体实现。`new java.util.HashMap().put(null, null)`是合法的,但不是...

    Java 面试中有关数据类型常见的 50 个面试题.pdf

    - **接口**:一种特殊的抽象类,其中包含公共抽象方法。 - **数组**:用于存储同类型元素的有序集合。 ### 二、Stream API #### 3. Stream API简介 Stream API 是 Java 8 引入的一种新功能,它提供了一种更加高效...

    java实用基础知识题.pdf

    这份题目涉及了Java的基础知识,包括编译、运行Java程序、源文件结构、类与接口的定义、主方法签名、命令行参数、注释、标识符、关键字、字符类型、数据类型范围以及对象实例化等概念。 1. Java编译、运行与文档...

    JAVA开发面试附答案

    - **Optional 类**:避免空指针异常,提供了一种更好的处理 null 值的方式。 - **Date and Time API**:改进的时间日期处理API。 - **Default Methods in Interfaces**:接口可以有默认实现的方法。 #### 19. 比较...

    JAVA面试使用的笔试题目

    这份Java面试笔试题目涵盖了多个Java基础、容器以及数据库相关的知识点,以下是这些知识点的详细解析: 1. **JDK和JRE的区别**: JDK(Java Development Kit)是Java开发工具包,包含了JRE(Java Runtime ...

    Java面试笔试题目汇总e.docx

    正确的方法是创建一个HashMap实例,然后进行`put()`,如C:`new java.util.HashMap().put(null, null);`。 14. **异常处理**: 捕获异常是通过`try-catch`块实现的,`finally`块通常用来确保某些代码无论是否发生...

    Java极品学习资料

    - 在Java中,`byte`类型占用8位,取值范围为-128至127。 - `-128`可以通过直接赋值实现,即`byte b = -128;`。 **==运算符** - `==`用于比较两个基本类型的值是否相等或引用类型是否指向同一个对象。 - 示例说明...

    Java面试笔试题目汇总e.pdf

    13. 使用`Map`时,正确的做法是D: new java.util.TreeMap().put( 0 , null ) ;其他选项要么创建的不是`Map`实例,要么尝试插入空键值对,或者创建的是`SortedMap`,但未提供具体实现。 14. 关于异常处理,正确的...

    java面试宝典很全面

    这些基本类型可以通过相应的包装类进行转换,例如使用 `Integer.valueOf()` 方法可以将 `int` 类型转换为 `Integer` 类型。 ##### 2. 字符串处理 在 Java 中,字符串是不可变的对象。主要使用两种方式来处理字符串...

    java el jstl学习手册

    其中 `data` 是一个变量,其值可以是 `"sex"` 或 `"name"`。这样可以根据 `data` 的实际值动态地访问不同的属性。 ##### 3.4 复杂的 EL 表达式 EL 支持复杂的表达式,例如: ```jsp ${expr-a[expr-b]} ``` 这个...

Global site tag (gtag.js) - Google Analytics