В поисках решения, как сопоставить объекты из списка с данными из карты с условием, если поле объекта начинается со значений карты и сохранить на другой карте
У меня есть карта с некоторыми данными
Map<String, String> dataMap = new HashMap()
dataMap.put("d1", "DATA1")
dataMap.put("d2", "DATA2")
dataMap.put("d3", "DATA3")
и список объектов DataElement
List<DataElement> elements = new ArrayList()
elements.add(new DataElement("TEXT1"))
elements.add(new DataElement("TEXT2"))
elements.add(new DataElement("DATA1_text1"))
elements.add(new DataElement("DATA2_text2"))
class DataElement {
public field;
public DataElement(String text){
this.field = text
}
public getField(){
return this.field
}
}
И я пытаюсь получить новую карту, где ключи - это значения из первой карты, а значения - это объекты (поле) из списка с условием, если поле объекта начинается со значения карты:Результат должен быть:
[d1=DATA1_text1, d2=DATA2_text2]
Мой код:
Map<String, String> collect2 = dataMap.entrySet().stream()
.filter({ map -> elements.stream()
.anyMatch({ el -> el.getField().startsWith(map.getValue()) })})
.collect(Collectors.toMap(KEY, VALUE))