All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.kotcrab.vis.usl.CollectionUtils Maven / Gradle / Ivy

There is a newer version: 0.2.1
Show newest version
package com.kotcrab.vis.usl;

import java.util.*;

/** CollectionUtils copied from Apache Commons */
public class CollectionUtils {

	/**
	 * Returns true iff the given {@link Collection}s contain
	 * exactly the same elements with exactly the same cardinality.
	 * 

* That is, iff the cardinality of e in a is * equal to the cardinality of e in b, * for each element e in a or b. */ public static boolean isEqualCollection (final Collection a, final Collection b) { if (a.size() != b.size()) { return false; } else { 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; } } } private static final int getFreq (final Object obj, final Map freqMap) { try { return ((Integer) (freqMap.get(obj))).intValue(); } catch (NullPointerException e) { // ignored } catch (NoSuchElementException e) { // ignored } return 0; } /** * Returns a {@link Map} mapping each unique element in * the given {@link Collection} to an {@link Integer} * representing the number of occurances of that element * in the {@link Collection}. * An entry that maps to null indicates that the * element does not appear in the given {@link Collection}. */ public static Map getCardinalityMap (final Collection col) { HashMap count = new HashMap(); Iterator it = col.iterator(); while (it.hasNext()) { Object obj = it.next(); Integer c = (Integer) (count.get(obj)); if (null == c) { count.put(obj, new Integer(1)); } else { count.put(obj, new Integer(c.intValue() + 1)); } } return count; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy