您现在的位置是:首页 > 正文

commons-collections包中的常用的工具类

2024-02-01 01:30:13阅读 2

commons-collections包中的常用的工具类

 

       <dependency>
          <groupId>commons-collections</groupId>
          <artifactId>commons-collections</artifactId>
       </dependency>

 

 

 

 

1. CollectionUtils工具类用于操作集合,  isEmpty () 方法最有用   (commons-collections包中的类)

复制代码
package cn.xm.exam.test;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.apache.commons.collections.CollectionUtils;

public class test {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("str1");
        list.add("str2");

        List<String> list1 = new ArrayList<String>();
        list1.add("str1");
        list1.add("str21");

        // 判断是否有任何一个相同的元素
        System.out.println(CollectionUtils.containsAny(list, list1));

        // 求并集(自动去重)
        List<String> list3 = (List<String>) CollectionUtils.union(list, list1);
        System.out.println(list3);

        // 求交集(两个集合中都有的元素)
        Collection intersection = CollectionUtils.intersection(list, list1);
        System.out.println("intersection->" + intersection);

        // 求差集(并集去掉交集,也就是list中有list1中没有,list1中有list中没有)
        Collection intersection1 = CollectionUtils.disjunction(list, list1);
        System.out.println("intersection1->" + intersection1);

        // 获取一个同步的集合
        Collection synchronizedCollection = CollectionUtils.synchronizedCollection(list);

        // 验证集合是否为null或者集合的大小是否为0,同理有isNouEmpty方法
        List list4 = null;
        List list5 = new ArrayList<>();
        System.out.println(CollectionUtils.isEmpty(list4));
        System.out.println(CollectionUtils.isEmpty(list5));
    }
}
复制代码

结果:

true
[str2, str21, str1]
intersection->[str1]
intersection1->[str2, str21]
true
true

 

补充:此工具类还可以向集合中加数组元素

        List<String> list = new ArrayList<>();
        String s[] = { "1", "2" };
        CollectionUtils.addAll(list, s);
        list.add("3");
        System.out.println(list);

结果:

[1, 2, 3]

 

2.   MapUtils工具类,isEmpty最有用(commons-collections包中的类)

  可以用于map判断null和size为0,也可以直接获取map中的值为指定类型,没有的返回null

复制代码
package cn.xm.exam.test;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.NumberUtils;

import ognl.MapElementsAccessor;

public class test {
    public static void main(String[] args) {
        Map map = null;
        Map map2 = new HashMap();
        Map map3 = new HashMap<>();
        map3.put("xxx", "xxx");
        // 检验为empty可以验证null和size为0的情况
        System.out.println(MapUtils.isEmpty(map));
        System.out.println(MapUtils.isEmpty(map2));
        System.out.println(MapUtils.isEmpty(map3));

        String string = MapUtils.getString(map3, "eee");
        String string2 = MapUtils.getString(map3, "xxx");
        Integer integer = MapUtils.getInteger(map3, "xxx");
        System.out.println("string->" + string);
        System.out.println("string2->" + string2);
        System.out.println("integer->" + integer);
        System.out.println(integer == null);
    }
}
复制代码

结果:

true
true
false
INFO: Exception: java.text.ParseException: Unparseable number: "xxx"
string->null
string2->xxx
integer->null
true

 

 MapUtils.isEmpty根踪源码:

    public static boolean isEmpty(Map map) {
        return (map == null || map.isEmpty());
    }

 

map.isEmpty()代码查看hashmap:
    public boolean isEmpty() {
        return size == 0;
    }

 

补充:MapUtils也可以获取值作为String,获取不到取默认值:

        //获取字符串,如果获取不到可以返回一个默认值
        String string3 = MapUtils.getString(map3, "eee","没有值");

 

 查看源码:

复制代码
    /**
     *  Looks up the given key in the given map, converting the result into
     *  a string, using the default value if the the conversion fails.
     *
     *  @param map  the map whose value to look up
     *  @param key  the key of the value to look up in that map
     *  @param defaultValue  what to return if the value is null or if the
     *     conversion fails
     *  @return  the value in the map as a string, or defaultValue if the 
     *    original value is null, the map is null or the string conversion
     *    fails
     */
    public static String getString( Map map, Object key, String defaultValue ) {
        String answer = getString( map, key );
        if ( answer == null ) {
            answer = defaultValue;
        }
        return answer;
    }
复制代码

 

 

转载于:https://www.cnblogs.com/dw3306/p/11033204.html

网站文章

  • SpringBoot集成logstash

    SpringBoot集成logstash

    前言 原网址:https://www.jianshu.com/p/b6977babcc7e 大家应该都听说过ELK,一般ELK都是用来做分布式系统的集中日志管理,ELK的优点这里就不介绍了,好处太多,今天主要介绍下其中的Logstash。数据传给logstash,它将数据进行过滤和格式化(转成JSON格式),然后传给数据存储或者消息队列Broker,用于后续加工处理。 最近要做app埋点监控...

    2024-02-01 01:30:05
  • List-迭代器与反向迭代器

    List-迭代器与反向迭代器

    list的简单使用以及模拟实现(模板参数,反向迭代器)

    2024-02-01 01:29:59
  • initgraph函数(讲解) 热门推荐

    函数名: initgraph()   功 能: 初始化图形系统   函数原型: void far initgraph(int far *graphdriver, int far *graphmode,   char far *pathtodriver);graphdriver是上涨指向图形驱动序号变量的指针;graphmode是在graphdriver选定后,指向图形显示模式序号变

    2024-02-01 01:29:30
  • C语言案例-输出 Fibonacci 数列(斐波那契数列)的前 40 项

    【代码】C语言案例-输出 Fibonacci 数列(斐波那契数列)的前 40 项。

    2024-02-01 01:29:21
  • iOS 8 人机交互指南极客翻译版(一)

    iOS 8 人机交互指南极客翻译版(一)

    为设计而生iOS 设计包含了以下几个关键点遵从:UI 能够帮助用户理解内容并与之互动,但却不会分散用户对内容的注意力清晰:每种大小的文字都必须是易读的,界面中的图标醒目且无多余的修饰,在功能上有突出的重点,很好地突显了设计理念。深度:视觉层次和生动的交互操作赋予了 UI 生命力,不仅能够帮助用户更好的理解 UI,还能让用户在使用过程中感到惊喜无论你正在重新...

    2024-02-01 01:29:15
  • 苹果手机怎么编辑word文档_办公软件入门到精通:文档WORD文本编辑

    苹果手机怎么编辑word文档_办公软件入门到精通:文档WORD文本编辑

    大家好:我是小愿望,很高兴你能看到这篇文章,也感谢能在这个平台能跟大家分享,在以后的日子里会陆续发文一些办公软件的操作知识,希望大家喜欢。上一篇跟大家分享了WORD文档的文本输入内容,本期我们继续往下...

    2024-02-01 01:28:46
  • 【华为OD机试真题 Python语言】179、探索地块建立 | 机试真题+思路参考+代码解析

    给一块 n * m 的地块,相当于n * m的二维数组,每个元素的值表示这个小地块的发电量; &gt; 求在这块地上建立正方形的边长为c的发电站,发电量满足目标电量k的地块数量

    2024-02-01 01:28:38
  • docker高级(mysql主从复制)

    docker高级(mysql主从复制)

    在主库创建表,查看从库数据情况!

    2024-02-01 01:28:31
  • STM32生成bin文件

    STM32生成bin文件

    方案一:第一步:打开Options for Target ‘target 1’对话框,选择User标签页;第二步:找到fromelf.exe的路径(keil5在ARMCC里)第三步:重点(基路径是工程...

    2024-02-01 01:28:25
  • php 连接数据库方法

    MYSQL  <?php    header("Content-Type:text/html;charset=utf-8");    $link = mysql_connect('localhost:3306','root','123456');    if($link){      echo '数据库连接正确';    }else{      echo '数据库...

    2024-02-01 01:27:58