Во-первых, действительно непонятно, что вы хотите, так как вначале вы, кажется, говорите, что
У меня есть список мест, возвращенных API мест Google, и я решил найти место ссамая низкая цена .
тогда внизу вашего описания вы говорите, что:
Возвращает мне самую низкую цену, но этобыло бы здорово получить и название Места (у него есть атрибут name).
как будто последнее, кажется, то, что вы хотите?
Тем не менее, вот оба решения:
, если вы хотите найти минимальное значение по количеству после группировки по какой-либо причине, которая может быть ... тогда вы могли бы сделать что-то вроде:
places.stream()
.collect(Collectors.groupingBy(Place::getPrice))
.entrySet().stream()
.min(Comparator.comparingInt((Map.Entry<Integer, List<Place>> e) -> e.getValue().size()))
.map(e -> new SimpleEntry<>(e.getKey(), e.get(0)));
обратите внимание, что выше я использовал Integer
в качестве ключа ввода, не стесняйтесь изменить его на соответствующий тип, если это не Integer
.
В противном случае, если вы просто преследуете объект с наименьшей ценой, вы можете сделать:
places.stream().min(Comparator.comparingInt(Place::getPrice));
или:
Collections.min(places, Comparator.comparingInt(Place::getPrice));
Нет необходимости в группировке и все, что происходитна.