В дополнении к вопросу Что можно закастить в SortedSet?, нашел решение, но выдает другую ошибку! Почему, не могу понять...
Collection<User> users = new HashSet<>(source);
List<User> forReturn = new ArrayList<>(users);
forReturn.stream().sorted();
return forReturn.get(users.size() - 1);
Стрим так не работает. это все таки уже функционалка. Мало того, что стрим ленивый, так он еще выводит результат исключительно через терминальные вызовы, посему для вывода в лист он создаст вам новую коллекцию. Выглядит это так:
Collection<User> users = new HashSet<>(source);
List<User> forReturn = new ArrayList<>(users);
return forReturn.stream().sorted().collect(Collectors.toList()).get(users.size() - 1);
Однако, вы должны понимать, что это очень плохая идея. Вы ищите 1 элемент по определенному признаку, для этого сортировать нерационально, ибо ресурсозатратно. Мало того, если вы не имплеиментируете Comparable либо не напищите Comparator для класса User, то получите ошибку во всех случаях сортировки (именно поэтому вы получааете класскаст для сортированной коллекции).
Если вы хотите использовать стрим, то лучше сделать так
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class User {
private final String name;
private final Integer age;
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
@Override
public String toString() {
return "User{" + "name=" + name + ", age=" + age + '}';
}
public static void main(String[] args) {
final List<User> list = Arrays.asList(new User("Igor", 25), new User("Masha", 32), new User("Dasha", 22));
User user = list.stream().max(Comparator.comparing(User::getAge, Comparator.reverseOrder())).get();
System.out.println(user);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Сегодня занимался в Java проблемой кавычек в SQL запросах (инъекция) и обнаружил, что чтобы после результата функции получить \', я должен написать...
Как сделать чтобы методе класса можно было перекинуть ссылку объекта на созданный новый объект
Пытаюсь добавить несколько фрагментов в один контейнер, но в результате получается так, как если бы добавлял без цикла первый фрагментГде...
Решил реализовать в коде обновление информации по API запросу через определенный интервал времениСразу по нажатию кнопки информация приходит...