У меня есть некоторая коллекция List<Map<String, Object>>
, которая должна быть отфильтрована в необязательном порядке с помощью лямбда-выражений Java 8. Я получу объект JSON с флагами, к которым необходимо применить критерии фильтрации. Если объект JSON не получен, фильтрация не требуется.Java 8 Фильтрация с условием и сбор пользовательской карты
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
}
Теперь я собираю на заказ карта так:
Map<String, Object> someMap = new LinkedHashMap<>();
someMap.put("someCustomField1", someObject.Field1());
someMap.put("someCustomField2", someObject.Field2());
someMap.put("someCustomField3", someObject.Field3());
В Java 9 вы можете заменить ужасную конструкцию внутреннего класса на Map.of(). –
@BrianGoetz приятно «встретить» вас! Я читаю Java-параллелизм на практике, и мне это нравится! –
@ DavidPérezCabrera или не дождаться java-9 и использовать guava ImmutableMap.of() – Eugene