zoukankan      html  css  js  c++  java
  • commons-collections包中的常用的工具类

    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;
        }
    复制代码

     

  • 相关阅读:
    Python中所有的关键字
    关于selenium的8种元素定位
    对提示框的操作
    selenium+webservice进行百度登录
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled...报错解决
    Vue中使用echarts
    npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142解决方法
    插入排序
    冒泡排序优化
    roject 'org.springframework.boot:spring-boot-starter-parent:XXX' not found 解决
  • 原文地址:https://www.cnblogs.com/dw3306/p/11033204.html
Copyright © 2011-2022 走看看