2014-12-18 2 views
0

Мне было интересно, есть ли способ найти минимум или максимум коллекции, используя компаратор в библиотеке коллекций коллекций Apache. Что эквивалентно этому с помощью гуавы:Поиск минимального значения в соответствии с компаратором

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

Apache Commons коллекции основаны на 'java.util.Collection'. Поэтому нет ничего особенного в Apache, о котором вы должны знать в этом контексте. – RealSkeptic

ответ

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 
0

Почему бы не просто использовать min и max методы класса Collection?

Пример:

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)); 
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; 
} 
Смежные вопросы