Ich versuche, einen eleganten Weg zu finden, um eine Karte zu erstellen, die Gruppe von Feldwerten von Feldnamen mit Hilfe von Java 8 als die folgenden:Java 8: Gruppieren Feldwerte von Feldnamen
@Test
public void groupFieldValuesByFieldNames() {
Person lawrence = aPerson().withFirstName("Lawrence").withLastName("Warren").born();
Person gracie = aPerson().withFirstName("Gracie").withLastName("Ness").born();
Map<String, List<String>> valuesByFieldNames = new HashMap<>();
Stream.of(lawrence, gracie).forEach(person -> {
valuesByFieldNames.computeIfAbsent("lastName", s -> new ArrayList<>()).add(person.getLastName());
valuesByFieldNames.computeIfAbsent("firstName", s -> new ArrayList<>()).add(person.getFirstName());
});
assertThat(valuesByFieldNames, hasEntry("lastName", asList("Warren", "Ness")));
assertThat(valuesByFieldNames, hasEntry("firstName", asList("Lawrence", "Gracie")));
}
Wenn Sie verpflichtet fühlen, etwas zu tun, würde ich mit 'Map>' beginnen, die jedes Feldnamen zugeordnet ein Getter für dieses Feld. –