Mam pewną kolekcję List<Map<String, Object>>
, którą należy filtrować opcjonalnie za pomocą wyrażeń lambda w języku Java 8. Otrzymam obiekt JSON z flagami, które kryteria filtrowania muszą zostać zastosowane. Jeśli obiekt JSON nie zostanie odebrany, nie jest wymagane filtrowanie.Java 8 Filtrowanie ze stanem i zbieranie niestandardowej mapy
protected List<Map<String, Object>> populate(List<SomeObject> someObjects, String string) {
taskList.stream()
// How to put condition here? Ho to skip filter if no filter oprions are received?
.filter(someObject -> (if(string != null) someobject.getName == string))
// The second problem is to collect custom map like
.collect(Collectors.toMap("customField1"), someObject.getName()) ... // I need somehow put some additional custom fields here
}
Teraz mam zwyczaj zbierania map tak:
Map<String, Object> someMap = new LinkedHashMap<>();
someMap.put("someCustomField1", someObject.Field1());
someMap.put("someCustomField2", someObject.Field2());
someMap.put("someCustomField3", someObject.Field3());
W Javie 9 można zastąpić okropną wewnętrzną konstrukcję klasą Map.of(). –
@BrianGoetz miło cię "poznać"! W praktyce czytam współbieżność Java i uwielbiam to! –
@ DavidPérezCabrera lub nie czekaj na java-9 i używaj guava ImmutableMap.of() – Eugene