2016-03-13 4 views
-2

Я пытаюсь написать метод, который возвращает наименьший элемент в ArrayList, так что в тестовой программе я могу вызвать метод для списка целых, строковых, Rational и сложных типов. Я думаю, у меня есть идея, и это выглядит следующим образом:Generics ArrayList

public static <E extends Comparable <E>> E minimum (ArrayList<E> list) { 

Но я не знаю точно, как начать это как то, что происходит в методе. Как будто у меня есть идея того, что должно быть в методе в голове, но мне просто не нравится, как это выносить. Любые предложения о том, как я должен это делать, пожалуйста?

+0

Начало его реализации с массивом целых чисел в качестве аргумента, а не Список сопоставимым. Затем адаптируйте алгоритм с помощью compareTo(), а не '<'. Обратите внимание, что то, что вы реализуете, уже существует в JDK (и вы можете посмотреть исходный код): http://docs.oracle.com/javase/8/docs/api/java/util/Collections.html# min-java.util.Collection- –

+0

Не могли бы вы показать мне образец кода? Спасибо. – Kamal

+0

Нет. Поиск минимального значения в массиве должен быть самым первым алгоритмом, использующим петли, которые я должен был программировать за всю свою жизнь. Это должно быть достаточно простым для вас, особенно если вы изучаете дженерики, которые являются гораздо более сложными. Как вы находите наименьшее значение в массиве вручную? Кстати, если вы хотите обмануть, вы можете просто посмотреть исходный код java.util.Collections.min(). –

ответ

1

С Java 8, вы могли бы просто написать код, как показано ниже:

public static <E extends Comparable<E>> E minimum(ArrayList<E> list) { 
    return list.stream().min(Comparator.naturalOrder()).orElse(null); 
} 
Смежные вопросы