람다를 사용하여 연령 그룹의 대부분의 좋아하는 스포츠는까다로운 - 나는 이름, 나이, 좋아하는 스포츠의 목록 (수영, 달리기, 자전거 타기, 복싱, 레슬링)가 Person 클래스가
public class Person {
private String name;
private int age;
private List<String> favouriteSports;
public Person(String name, int age, List<String> favourites) {
this.name = name;
this.age = age;
this.favouriteSports= favourites;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public List<String> getFavourites() {
return favouriteSports;
}
}
public class PersonManager {
private Map<String, Person> persons = new HashMap<>();
public void calculateMostFavouriteForAge(){
//1. Group all persons according to age
//2. Get count of favourite sports for every sport in that age group
//3. Store the age and the favourite sport in the age group in a Map.
}
}
PersonManager가있다 Person 명과 대응하는 Person 객체의 내부 맵. 특정 연령대의 모든 사람들에게 가장 좋아하는 아이템을 얻고 싶습니다.
나는 100 명의 인물 (난수)이 있다고 가정하고 20 세 그룹에 속한 사람이 25 명이라고 가정하고, 20 세 그룹의 25 명 중에서 가장 많이 선택한 스포츠를 찾고 싶습니다.
모든 사람의 나이에 대한 맵 값을 그룹화하고 해당 연령 그룹에 가장 많이 좋아하는 스포츠를 저장하려면 어떻게해야합니까?
지도 값에서 모두를 가져와 연령대별로 나누어서 그 나이대의 사람들을 가로 질러 가로 질러 모든 사람들이 가장 인기있는 스포츠를 찾습니다. 붐 당신은 가장 좋아하는 스포츠가 있습니다. – Dominic
persons.entrySet(). stream(). collect (Collectors.groupingBy (Person :: getAge)); - 그룹화하려고하면 오류가 발생합니다. 연령대에 따라 그룹에서지도로 값 개체를 가져 오는 방법을 잘 모릅니다. – megan
도움이 될 수도 있습니다. https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html 또는 for-each 루프를 사용하여 이전 방식으로 할 수 있습니다. keySets – Dominic