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

     

  • 相关阅读:
    Coroutine in Java
    常见的开源日志(包括分布式)
    深入理解 Java G1 垃圾收集器--转
    卷积神经网络——本质上是在利用卷积做特征压缩,然后再全连接
    神经网络和反向传播算法——反向传播算法本质上是随机梯度下降,链式求导法则而来的
    LSTM入门学习——结合《LSTM模型》文章看
    LSTM入门学习——本质上就是比RNN的隐藏层公式稍微复杂了一点点而已
    LSTM模型
    syslog介绍-CS架构来采集系统日志
    NetFlow是一种数据交换方式,提供网络流量的会话级视图,记录下每个TCP/IP事务的信息
  • 原文地址:https://www.cnblogs.com/dw3306/p/11033204.html
Copyright © 2011-2022 走看看