java stream groupingBy встроенные объекты - PullRequest
3 голосов
/ 17 октября 2019

У меня есть пара объектов:

public class RequestHostel {
    private Hostel name;
}

и

public class Hostel {
    private String value;
}

, и я хотел бы знать, можно ли сгруппировать по значению Hostel, что-то вроде

.stream().collect(Collectors.groupingBy(RequestHostel::getName::getValue, counting()))

Ответы [ 2 ]

3 голосов
/ 17 октября 2019

Вы не можете связать ссылку на метод, но вы можете использовать лямбду:

.stream().collect(Collectors.groupingBy(rh -> rh.getName().getValue(), counting()))

Или, если вы не используете эти объекты, вы можете просто отобразить их:

.stream().map(RequestHostel::getName).collect(Collectors.groupingBy(Hotel::getValue, counting()))
2 голосов
/ 17 октября 2019

Вы не можете связать ссылки на метод , как вы это сделали. Но да, вы можете использовать лямбда для этого:

Map<String, Long> countGroupedByValue = requestHostels.stream()
        .collect(Collectors.groupingBy(requestHostel -> requestHostel.getName().getValue(),
                Collectors.counting()));
...