根据比较器找到最小值

时间:2014-12-18 13:30:51

标签: java apache-commons

我想知道是否有办法在Apache commons-collection库中使用比较器找到集合的最小值或最大值。与Guava相当的东西:

return Ordering.from(comparator).max(collection);

3 个答案:

答案 0 :(得分:4)

java.util.Collections有方法

max(Collection) // natural order
max(Collection, Comparator) // according to compare provided

min(Collection)   // natural order
min(Collection, Comparator)  // according to compare provided

答案 1 :(得分:0)

为什么不简单地使用Collection类的minmax方法?

示例:

  LinkedList<Integer> list = new LinkedList<Integer>();
  list.add(-15);  
  list.add(33);  
  list.add(-23);  
  list.add(11); 
  System.out.println("Max value: " + Collections.max(list,comparator)); 

答案 2 :(得分:0)

像这样:

Item getMax(Collection<Item> items, Comparator<Item> comparator) {
    Item temp = null;
    for(Item item : items) {
        if(temp == null || comparator.compare(temp, item) < 0)
            temp = item;
    }
    return temp;
}

Item getMin(Collection<Item> items, Comparator<Item> comparator) {
    Item temp = null;
    for(Item item : items) {
        if(temp == null || comparator.compare(temp, item) > 0)
            temp = item;
    }
    return temp;
}