How to get max() element from List in Guava

Mike Minicki picture Mike Minicki · Aug 1, 2012 · Viewed 22.6k times · Source

Let's say we have a Collection of Items:

class Item {
    public String title;
    public int price;
}

List<Item> list = getListOfItems();

I would like to get an Item with a maximum price out of that list with Guava library (with Ordering, I presume). I mean something similar to this Groovy code:

list.max{it.price}

How do I do that? How efficient is it?

Answer

JB Nizet picture JB Nizet · Aug 1, 2012
Ordering<Item> o = new Ordering<Item>() {
    @Override
    public int compare(Item left, Item right) {
        return Ints.compare(left.price, right.price);
    }
};
return o.max(list);

It's as efficient as it can be: it iterates through the items of the list, and returns the first of the Items having the maximum price: O(n).