zoukankan      html  css  js  c++  java
  • Java中判断两个列表是否相等

    CollectionUtils.isEqualCollection(final Collection a, final Collection b)
    CollectionUtils工具类中有一个查看两个Collection是否相等的方法。
    public static boolean isEqualCollection(final Collection a, final Collection b) {
            if(a.size() != b.size()) {
                return false;
            } else {
           //获取以对象为键以对象的数量位置的Map
                Map mapa = getCardinalityMap(a);
                Map mapb = getCardinalityMap(b);
                if(mapa.size() != mapb.size()) {
                    return false;
                } else {
                    Iterator it = mapa.keySet().iterator();
                    while(it.hasNext()) {
                        Object obj = it.next();  
                        //获取对象的数量,判断是否相等
                if(getFreq(obj,mapa) != getFreq(obj,mapb)) { return false; } } return true; } } }

    主要的方法是getCardinalityMap(Collection coll)方法,返回的结果是以对象为键,以对象的数量为值的Map。

       public static Map getCardinalityMap(final Collection coll) {
            Map count = new HashMap();
            for (Iterator it = coll.iterator(); it.hasNext();) {
                Object obj = it.next();
                Integer c = (Integer) (count.get(obj));
                if (c == null) {
                    count.put(obj,INTEGER_ONE);
                } else {
                    count.put(obj,new Integer(c.intValue() + 1));
                }
            }
            return count;
        }

      从Map中获取对象数量的方法

        private static final int getFreq(final Object obj, final Map freqMap) {
            Integer count = (Integer) freqMap.get(obj);
            if (count != null) {
                return count.intValue();
            }
            return 0;
        }

    注意:这里两个Collection中的对象需要实现hashcode()和equals()方法

  • 相关阅读:
    闭包概念集合
    对象的基本方法
    webpack始出来
    elasticsearch性能调优
    elasticsearch 倒排索引学习
    elasticearch 归并策略
    更加详细的Log4net的配置
    第一篇博客关于Log4net的配置记录
    js数组小结
    javascript在不同的浏览器处理事件
  • 原文地址:https://www.cnblogs.com/alway-july/p/9723782.html
Copyright © 2011-2022 走看看