commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From neiloto...@apache.org
Subject cvs commit: jakarta-commons/collections/src/java/org/apache/commons/collections ListUtils.java
Date Sat, 11 Dec 2004 06:22:58 GMT
neilotoole    2004/12/10 22:22:58

  Modified:    collections/src/java/org/apache/commons/collections
                        ListUtils.java
  Log:
  Added new methods:
  #retainAll(Collection, Collection)
  #removeAll(Collection, Collection)
  #unmodifiableListCopy(Collection)
  
  Revision  Changes    Path
  1.29      +80 -1     jakarta-commons/collections/src/java/org/apache/commons/collections/ListUtils.java
  
  Index: ListUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/ListUtils.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- ListUtils.java	1 Apr 2004 20:12:00 -0000	1.28
  +++ ListUtils.java	11 Dec 2004 06:22:58 -0000	1.29
  @@ -258,6 +258,23 @@
           return UnmodifiableList.decorate(list);
       }
   
  +    
  +	/**
  +	 * Returns an unmodifiable list copy of the collection.
  +	 * <p>
  +	 * This method uses the unmodifiable list implementation in the decorators subpackage.
  +	 * @param collection the <code>Collection</code> to copy.
  +	 * @return an unmodifiable <code>List</code>.
  +	 * @throws IllegalArgumentException if collection is null.
  +	 */
  +	public static List unmodifiableListCopy(final Collection collection) {
  +		if (collection == null) throw new IllegalArgumentException("null not permitted.");
  +		
  +		final List copy = new ArrayList(collection.size());
  +		copy.addAll(collection);
  +		return UnmodifiableList.decorate(copy);
  +	}
  +    
       /**
        * Returns a predicated (validating) list backed by the given list.
        * <p>
  @@ -351,4 +368,66 @@
           return FixedSizeList.decorate(list);
       }
   
  +    /**
  +	 * Returns a List containing all the elements in <code>collection</code>
  +	 * that are also in <code>retain</code>. The cardinality of an element <code>e</code>
  +	 * in the returned list is the same as the cardinality of <code>e</code>
  +	 * in <code>collection</code> unless <code>retain</code> does
not contain <code>e</code>, in which
  +	 * case the cardinality is zero. This method is useful if you do not wish to modify
  +	 * the collection <code>c</code> and thus cannot call <code>collection.retainAll(retain);</code>.
  +	 * 
  +	 * @param collection the collection whose contents are the target of the #retailAll operation
  +	 * @param retain the collection containing the elements to be retained in the returned
collection
  +	 * @return a <code>List</code> containing all the elements of <code>c</code>
  +	 * that occur at least once in <code>retain</code>.
  +	 * @throws NullPointerException if either parameter is null
  +	 */
  +	public static List retainAll(final Collection collection, final Collection retain) {
  +		final List list = new ArrayList(Math.min(collection.size(), retain.size()));
  +
  +		Object item = null;
  +		for (final Iterator iter = collection.iterator(); iter.hasNext();)
  +		{
  +			item = iter.next();
  +
  +			if (retain.contains(item))
  +			{
  +				list.add(item);
  +			}
  +		}
  +
  +		return list;
  +	}
  +	
  +	/**
  +	 * Removes the elements in <code>remove</code> from <code>collection</code>.
That is, this
  +	 * method returns a list containing all the elements in <code>c</code>
  +	 * that are not in <code>remove</code>. The cardinality of an element <code>e</code>
  +	 * in the returned collection is the same as the cardinality of <code>e</code>
  +	 * in <code>collection</code> unless <code>remove</code> contains
<code>e</code>, in which
  +	 * case the cardinality is zero. This method is useful if you do not wish to modify
  +	 * <code>collection</code> and thus cannot call <code>collection.removeAll(remove);</code>.
  +	 * 
  +	 * @param collection the collection from which items are removed (in the returned collection)
  +	 * @param remove the items to be removed from the returned <code>collection</code>
  +	 * @return a <code>List</code> containing all the elements of <code>c</code>
except
  +	 * any elements that also occur in <code>remove</code>.
  +	 * @throws NullPointerException if either parameter is null
  +	 */
  +	public static List removeAll(final Collection collection, final Collection remove) {
  +		final List list = new ArrayList();
  +
  +		Object o = null;
  +		for (final Iterator iter = collection.iterator(); iter.hasNext();)
  +		{
  +			o = iter.next();
  +			if (remove.contains(o) == false)
  +			{
  +				list.add(o);
  +			}
  +		}
  +
  +		return list;
  +	}
  +    
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message