【技术累积】【点】【java】【29】MapUtils

内容

  • 是Apache组织下的commons-collections包中的工具类
<dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>
  • Map操作相关的,最常用和null值相关

使用

  • 取值
public static String getString(final Map map, final Object key) {
        if (map != null) {
            Object answer = map.get(key);
            if (answer != null) {
                return answer.toString();
            }
        }
        return null;
    }

public static String getString( Map map, Object key, String defaultValue ) {
        String answer = getString( map, key );
        if ( answer == null ) {
            answer = defaultValue;
        }
        return answer;
    }

取值,二元参数无默认字符串;

同样有针对其他类型的取值方法;

  • 赋值
putAll()

public static void safeAddToMap(Map map, Object key, Object value) throws NullPointerException {
        if (value == null) {
            map.put(key, "");
        } else {
            map.put(key, value);
        }
    }

一个是putAll,数组加入map中;

一个是safeAdd,不加入null值;

  • 操作
//排序
public static Map orderedMap(Map map) {
        return ListOrderedMap.decorate(map);
    }

//反转,key value互换
public static Map invertMap(Map map) {
        Map out = new HashMap(map.size());
        for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
            Map.Entry entry = (Map.Entry) it.next();
            out.put(entry.getValue(), entry.getKey());
        }
        return out;
    }    
@Test
    public void testMapUtils() {
        Map<String,String> map = new HashMap<>();
        map.put("shit","Happens");
        map.put("0","1");
        log.info("{}",MapUtils.getString(map,"shi222t","hhhhh"));
        log.info("order:{}",MapUtils.orderedMap(map));
        log.info("invert:{}",MapUtils.invertMap(map));
    }

[INFO ] 2018-10-30 14:07:42,144 method:com.andy.dot.TestAllDots.testMapUtils(TestAllDots.java:177)
hhhhh
[INFO ] 2018-10-30 14:07:42,276 method:com.andy.dot.TestAllDots.testMapUtils(TestAllDots.java:178)
order:{0=1, shit=Happens}
[INFO ] 2018-10-30 14:07:42,277 method:com.andy.dot.TestAllDots.testMapUtils(TestAllDots.java:179)
invert:{Happens=shit, 1=0}

参考文章

原文地址:https://www.cnblogs.com/andy1202go/p/9876571.html

时间: 2024-10-30 11:10:03

【技术累积】【点】【java】【29】MapUtils的相关文章

Android技术10:Java与C语言之间简单数据的传递

由于C语言和Java语言之间很多类型不一致性,因此使用native时,需要数据类型转换.下面演示分别传递整型,字符串,整型数组,Java静态方法传递数据. 1.创建native方法 我们单独创建一个NativeClass类来存放native方法 1 package com.forsta.ndk; 2 3 public class NativeClass { 4 public native int add(int x,int y); 5 public native String showStrin

Protocol Buffer技术详解(Java实例)

Protocol Buffer技术详解(Java实例) 该篇Blog和上一篇(C++实例)基本相同,只是面向于我们团队中的Java工程师,毕竟我们项目的前端部分是基于Android开发的,而且我们研发团队中目前主要使用的开发语言就是C++.Java和Python,其中Python主要用于编写各种工具程序.然而为了保证该篇Blog的完整性和独立性,我仍然会将上一篇Blog中已经出现的内容再一次赘述,同时对于Java中特有的部分也会着重介绍.          一.生成目标语言代码.      下面

公共技术点之 Java反射 Reflection

公共技术之 Java反射 Reflection 1. 了解Java中的反射 1.1 什么是Java的反射 Java反射是可以让我们在运行时获取类的函数.字段.父类.接口等Class内部信息的机制.通过反射还可以让我们在运行期实例化对象,调用方法,通过调用get/set方法获取变量的值,即使方法或字段是私有的的也可以通过反射的形式调用,这种"看透class"的能力被称为内省,这种能力在框架开发中尤为重要. 有些情况下,我们要使用的类在运行时才会确定,这个时候我们不能在编译期就使用它,因此

(转)如何学习Java技术?谈Java学习之路

51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领域其他技能的学习. [在原先<学好Java之我见>的基础上重新整理而成] Java - 近10年来计算机软件发展过程中的传奇,其在众多开发者心中的地位就如“屠龙刀”.“倚天剑”. Java是个平台,我只想说说我对学好Java的一点看法,希望对初学者有所帮助. 1. 思考一下 学习Java之前,先别

《深入理解Java虚拟机》第一部分(Java技术体系,Java虚拟机,Java技术趋势)

第一部分 走进Java 1.Java技术体系 Sun官方定义的Java技术体系包括一下几个组成部分: Java程序设语言 各种硬件平台上的Java虚拟机 Class文件格式 Java API类库 第三方Java类库 JDK是用于支持Java程序开发的最小环境,Java程序设计语言.Java虚拟机.JavaAPI类库统称为JDKJRE是支持Java程序运行的标准环境,JavaAPI类库中的JavaSEAPI子集和Java虚拟机统称为JRE 按照Java技术关注的重点业务领域来分,Java技术体系可

【技术累积】【点】【java】【27】@JSONField

@JSONField 该注解隶属于阿里fastjson,方便fastjson处理对象时的一些操作 源码 @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER }) public @interface JSONField { /** * config encode/decode ordinal * @since 1.1.42 * @retu

【技术累积】【点】【java】【22】UUID

基础概念&使用 UUID是Universally Unique Identifier的缩写,它是在一定的范围内(从特定的名字空间到全球)唯一的机器生成的标识符. 说白了就是个唯一键,只不过到处都可以方便的生成,不用担心重复: 有几个特点 经由一定的算法,机器生成: 非人工置顶,非人工识别: 唯一性是有限的,只在特定的范围内才能得到保证,但重复几率非常小,可以忽略不计: 唯一性保证来源于算法,有多种算法,一般包含时间.网卡地址.伪随机数等: 使用: @Test public void testUU

【技术累积】【点】【java】【28】Map遍历

Map遍历 map的遍历一般有几种吧 遍历entrySet for(Map.Entry<String,String> entry : map.entrySet()){ } Iterator<Map.Entry<String,String>> it = map.entrySet().iterator(); while(it.hasNext()){ } 遍历keySet for(String key : map.keySet()){ } //iterator同上 遍历val

OSCHina技术导向:Java WEB企业门户平台Liferay

Liferay 是一个完整的门户解决方案,基于J2EE的应用,使用了EJB以及JMS等技术,前台界面部分使用Struts MVC 框架,基于XML的portlet配置文件可以自由地动态扩展,使用了Web服务来支持一些远程信息的获取,使用 Lucene实现全文检索功能. 主要特点如下:1.提供单一登陆接口,多认证模式(LDAP或SQL);2.管理员能通过用户界面轻松管理用户,组,角色:3.用户能可以根据需要定制个性化的门户布局;4.能够在主流的J2EE应用服务器上运行:5.支持主流的数据库:6.使