2013-04-08 12 views
0

Я новичок в Java, поэтому, пожалуйста, со мной.Получение max от LinkedList

Я делаю приложение, в котором пользователь может сэкономить путешествия с указанием места и продолжительности путешествия. Затем я как-то хочу посмотреть, что самое длинное. Все перемещения - это объекты в LinkedList, а длина перемещения - целая.

Как я могу получить наибольшее значение длины путешествия?

Решение: Законченное с помощью итерации через узлы:

for (Travel travel : travelList) { 
longest = travel.getLength(); 
destination = travel.getDest(); 
if (travel.getLength() >= longest) 
{ 
    destination = travel.getDest(); 
} 
} 
+2

Вы пробовали что-нибудь самостоятельно? – sanbhat

+0

Я попробовал Collections.max (MyTravelList), но без везения. Получил ошибку. Я предполагаю, что он сортирует список в целом, и не только по длине. – janlindso

+0

http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#max(java.util.Collection), также проверьте Comparable, это инструменты, которые вам нужны ... try вы сами сможете это получить. Также этот предыдущий пост будет полезен http://stackoverflow.com/questions/369383/best-way-for-get-min-and-max-value-from-a-list-of-comparables-in-java – AurA

ответ

1

Рассмотрим итерации над каждым узлом LinkedList, чтобы узнать самый длинный пункт назначения.

+0

Фактически , это будет работать. Сохранение узла в переменной, если оно наивысшее. Кажется, это проще сделать, чем использовать компаратор. Но что лучше, и почему? – janlindso

+0

Нет большой разницы, посмотрите исходный код метода Collection.max. Он делает то же самое и требует N итерации. Вероятно, вы можете найти метод max более элегантным. – Anton

0

Если вы храните поездки, используя свой собственный объект java, то вот указатель. Посмотрите на интерфейсы Collections.max() и Comparator и Comparable.

0

Вы можете изменить свой класс путешествий, так что он реализует Сопоставимые интерфейс, и добавить что-то like.-

@Override 
public int compareTo(Travel another) { 
    return getLength().compareTo(another.getLength()); 
} 

Тогда вы можете позвонить

Collections.sort(travelsList);

отсортировать список, используя ваши сравнения критерии, определенные в compareTo метод

Смежные вопросы