jest sobie kolekcja (kod z baeldung); z której robimy np grupowanie
class BlogPost {
String title;
String author;
BlogPostType type;
int likes;
}
enum BlogPostType {
NEWS,
REVIEW,
GUIDE
}
List<BlogPost> posts = Arrays.asList( ... );
Map<BlogPostType, List<BlogPost>> postsPerType = posts.stream()
.collect(groupingBy(BlogPost::getType));
A teraz, jak zrobić z dynamicznie podawaną nazwą pola?
String filedName = "author";
Field[] fields = BlogPost .class.getFields(); // sądzę że bez refleksji się nie obejdzie
???
Map<String, List<BlogPost>> postsPerType = posts.stream()
.collect(groupingBy( ??? filedName ));
Np klucze do tej Mapy wg pole.toString()
Ewentualnie łatwiejsza wersja, typ pól jest jednolity
class BlogPost {
String title;
String author;
String type;
// int likes;
}