Не идеально. Пожалуйста, не стесняйтесь улучшать этот ответ
public class Test
{
public static void main(String args[])
{
List<Person> persons=List.of(new Person("Ajay",Map.of("One",1))
,new Person("Vijay",Map.of("Two",2))
,new Person("Ajay",Map.of("Three",3))
,new Person("Vijay",Map.of("Four",4)));
Map<String,List<String>> values=
persons.stream()
.collect(Collectors.groupingBy(p->" name : "+p.name+", HashMapValue: ",
Collectors.mapping(p2->p2.age.entrySet().stream(),
Collectors.flatMapping(ages->ages.map(entry->get(entry))
,Collectors.toList())))
);
System.out.println("{");
values.entrySet().forEach((value)->
{
System.out.print(value.getKey());
value.getValue().forEach((age)->System.out.print(age+","));
System.out.println();
});
System.out.println("}");
}
private static String get(Entry<String,Integer> entry)
{
String map;
switch(entry.getKey())
{
case "One":map="age";
break;
case "Two":map="age2";
break;
case "Three":map="age3";
break;
default:map="age4";
}
return map+" :["+entry.getKey()+","+entry.getValue()+"]";
}
private static class Person
{
private final String name;
private final Map<String,Integer> age;
private Person(String name,Map<String,Integer> age)
{
this.name=name;
this.age=age;
}
}
Вывод:
{
name : Ajay, HashMapValue: age :[One,1],age3 :[Three,3],
name : Vijay, HashMapValue: age2 :[Two,2],age4 :[Four,4],
}