Ребят, почему ошибка? Что ему не нравится?
import org.belsut.estryn.lessons.task02.details.Detail;
import java.util.*;
public class Sorter {
private List<Detail> details = new ArrayList<>();
public Sorter(List<Detail> details) {
this.details = details;
}
private int getMinTime() {
int min = Collections.min(details);
return min;
}
}
Возникает ошибка компиляции:
min(java.util.Collection<? extends T>)
in Collections
cannot be applied to (java.util.List<import org.belsut.estryn.lessons.task02.details.Detail>
)
reason: no instance(s) of type variable(s) T exists to that Detail conform to Comparable
Collections.min
принимает коллекцию объектов, которые реализуют Comparable
:
<T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
Ошибка говорит о том, что класс Detail
не реализует интерфейс Comparable<Detail>
и, соответственно, метод не знает как сравнивать объекты и определять минимум.
Об этом написано в сообщении об ошибке:
reason: no instance(s) of type variable(s) T
exists to that Detail
conform to Comparable<? super T>
Кроме того, нужно заметить, что min
вернет Вам объект типа Detail
, а не int
который Вы ожидаете получить.
Пути решения проблемы:
Comparable<Detail>
в классе Detail
.min
, которая принимает компаратор. Так Вы сможете сортировать по заданному полю, например.Stream.min
или сначала Stream.mapToInt
затем IntStream.min
. Посмотрите пример №3 здесь: Finding Max/Min of a List or Collection.P.S. Сообщение об ошибке мне пришлось перепечатать. Эти полминуты жизни мне никто не вернет. Поэтому сообщения об ошибке нужно целиком копировать и вставлять в вопрос с виде текста.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
когда я запустила в eclipse все работало, однако в терминале все фейлится
Есть String, который в TextView автоматически переносит слова на вторую строку из-за большое количества слов в одной строкеХотела бы получить доступ...