Moje pytanie z Groovy Maps. Szukałem sposobu programowego dodania nowego wpisu do mapy Groovy bez nadpisywania bieżącego wpisu. Na przykładJak dodać wiele wpisów mapy Groovy bez nadpisywania bieżących wpisów?
def editsMap = [:]
lineEdits.flag.each
{ lineEdits_Flag ->
editsMap.put('FlagId',lineEdits_Flag.id)
editsMap.put('FlagMnemonic',lineEdits_Flag.mnemonic)
editsMap.put('Action',lineEdits_Flag.action)
println "editsMap: ${editsMap}"
}
Pierwszy przebieg produkuje tę mapę:
editsMap: [FlagId: 10001, FlagMnemonic: TRA, Akcja: przegląd]
Ale drugie przejście nadpisuje pierwszą przepustkę z: editsMap: [FlagId: 10002, FlagMnemonic: REB, Action: deny]
Co próbuję zrobić, to utworzyć wiele wpisów w ramach jednej mapy. Muszę moją mapę, aby wypełnić tak:
editsMap: [FlagId:10001, FlagMnemonic:TRA, Action:review]
editsMap: [FlagId:10002, FlagMnemonic:REB, Action:deny]
editsMap: [FlagId:10003, FlagMnemonic:UNB, Action:deny]
editsMap: [FlagId:20001, FlagMnemonic:REB, Action:deny]
editsMap: [FlagId:20002, FlagMnemonic:ICD, Action:review]
editsMap: [FlagId:30001, FlagMnemonic:REB, Action:deny]
editsMap: [FlagId:40001, FlagMnemonic:ICD, Action:review]
editsMap: [FlagId:40002, FlagMnemonic:MPR, Action:review]
editsMap: [FlagId:50001, FlagMnemonic:CPT, Action:deny]
editsMap: [FlagId:60001, FlagMnemonic:DTU, Action:deny]
editsMap: [FlagId:70001, FlagMnemonic:ICD, Action:review]
editsMap: [FlagId:70002, FlagMnemonic:MPR, Action:review]
Raz mam zaludnionych moją mapę wtedy muszę być w stanie znaleźć pewne wartości w celu przetwarzania wiadomości. Wierzę, że mogę użyć czegoś w stylu:
def thisValue = appliedEditsMap[FlagId, '10001'] ?: "default"
, aby wykonać szybkie wyszukiwanie.
Czy ktoś może mi pomóc zrozumieć, jak programowo dodawać wartości do mapy Groovy bez nadpisywania wartości już na mapie?
Możesz także wykonać: '[:]. WithDefault {[]} .z {map -> map.fruit << 'banana'; map.fruit << "jabłko"; map.veg << marchewka; mapa} ' –