В поисках решения, как сопоставить объекты из списка с данными из карты с условием, если поле объекта начинается со значений карты и сохранить на другой карте с Groovy
У меня есть карта с некоторыми данными
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]
Мой код работает, но может быть, есть более элегантный вариант с использованием collectEntries:
list = new HashMap()
mapping = dataMap.each { key, v ->
elements.each { el ->
if (el.getField().startsWith(v)) {
list.put(key, el)
}
}
}