ho la classe Person
:Bloccato con espressione lambda e mappa
import java.util.*;
public class Person {
private String name;
Map<String,Integer> Skills=new HashMap<>(); // skill name(String) and level(int)
public String getName(){
return this.name;
}
public Map<String,Integer> getSkills(){
return this.Skills;
}
}
E la classe App
:
import java.util.*;
import java.util.Map.Entry;
import static java.util.stream.Collectors.*;
import static java.util.Comparator.*;
public class App {
private List<Person> people=new ArrayList<>(); // the people in the company
public Map<String,Set<String>> PeoplePerSkill(){
return this.people.stream().collect(groupingBy(p-> p.getSkills().keySet() //<-get
//^problem here
,mapping(Person::getName,toSet())));
}
}
Nella classe App
il metodo PeoplePerSkill
bisogno di restituire il Set
di nomi di persone per abilità. Significa che un'abilità potrebbe essere di proprietà di molte persone.
ho bloccato con il groupingBy(p->p...........,)
non riesco proprio a ottenere il String
del nome di abilità, ho provato tanti modi, ma le cose si fanno strada straniero :(.
Tra l'altro, Attualmente il mio codice restituisce Map<Object, Set<String>>