삼바 :
나는 위치 Google 지역 정보 API에 의해 반환하고 가장 낮은 가격으로 장소를 찾아 결정의 목록을 가지고있다.
나는 자바 8을 구현하는 방법을 여기에 있습니다 :
BigDecimal lowestPrice = places.stream()
.collect(Collectors.groupingBy(Place::getPrice, Collectors.counting()))
.entrySet().stream().min(Map.Entry.comparingByValue())
.map(Map.Entry::getKey)
.orElse(BigDecimal.ZERO);
그것은 나에게 최저 가격을 반환하지만 (그것이 가지고뿐만 아니라 장소의 이름을 얻을 좋을 것이다 name
속성).
어떻게 또한 반환 할 수 name
가장 낮은 가격으로 장소의를?
우스만 D :
첫째, 당신이 처음으로 원하는 것을 정말 불분명, 당신은 말할 것 같다
나는 위치 Google 지역 정보 API에 의해 반환 결정의 목록이 가장 낮은 가격으로 장소를 찾을 수를 .
다음 설명의 하단에, 당신은 말 :
그것은 나에게 최저 가격을 반환하지만뿐만 아니라 장소의 이름을 얻기 위해 큰 수 있습니다 (이 이름 속성이 있습니다).
후자는 당신이 원하는 것 같다 것처럼?
그럼에도 불구하고, 여기에 두 솔루션은 다음과 같습니다 :
당신이있을 수 있습니다 어떤 이유 그룹화 한 후 계산에 의해 최소 값을 찾으려면 ... 당신은의 라인을 따라 뭔가를 할 수 :
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));
그룹화 및 모든 물건에 갈 필요가 없습니다.