Added maxList() and minList().

git-svn-id: https://samskivert.googlecode.com/svn/trunk@2772 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
ray.j.greenwell
2010-04-15 23:57:05 +00:00
parent 25f93f6bed
commit ae67d873e8
@@ -24,6 +24,7 @@ import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
@@ -102,6 +103,65 @@ public class CollectionUtil
}
}
/**
* Return a List containing all the elements of the specified Iterable that compare as being
* equal to the maximum element.
*
* @throws NoSuchElementException if the Iterable is empty.
*/
public static <T extends Comparable<? super T>> List<T> maxList (Iterable<? extends T> iterable)
{
return maxList(iterable, Comparators.comparable());
}
/**
* Return a List containing all the elements of the specified Iterable that compare as being
* equal to the maximum element.
*
* @throws NoSuchElementException if the Iterable is empty.
*/
public static <T> List<T> maxList (Iterable<? extends T> iterable, Comparator<? super T> comp)
{
Iterator<? extends T> itr = iterable.iterator();
T max = itr.next();
List<T> maxes = new ArrayList<T>();
maxes.add(max);
while (itr.hasNext()) {
T elem = itr.next();
int cmp = comp.compare(max, elem);
if (cmp <= 0) {
if (cmp < 0) {
max = elem;
maxes.clear();
}
maxes.add(elem);
}
}
return maxes;
}
/**
* Return a List containing all the elements of the specified Iterable that compare as being
* equal to the minimum element.
*
* @throws NoSuchElementException if the Iterable is empty.
*/
public static <T extends Comparable<? super T>> List<T> minList (Iterable<? extends T> iterable)
{
return maxList(iterable, java.util.Collections.reverseOrder());
}
/**
* Return a List containing all the elements of the specified Iterable that compare as being
* equal to the minimum element.
*
* @throws NoSuchElementException if the Iterable is empty.
*/
public static <T> List<T> minList (Iterable<? extends T> iterable, Comparator<? super T> comp)
{
return maxList(iterable, java.util.Collections.reverseOrder(comp));
}
/**
* Returns a list containing a random selection of elements from the
* specified collection. The total number of elements selected will be