【发布时间】:2019-10-15 01:04:08
【问题描述】:
我有以下 Map(每个键都是 String,每个值都是 List<Message>)
我的map是这样的:
1st entry :"MONDAY" -> [message1, message2, message3]
2nd entry : "TUESDAY" -> [message4, message5]
...
我的目标是更改每条消息的内容:
我在想这个:
map.entrySet().stream().peek(entry -> {
entry.getValue().stream().peek(m -> m.setMessage(changeMessage()))
})
但不知道如何完成并正确完成。
【问题讨论】:
-
还没有尝试过,但想知道使用简单的“forEach”是否更好,至少更容易。
-
My goal is to change each message content,意思是..??请举例说明。 -
试试这个
map.forEach((k,v)->v.replaceAll(m->m.setMessage(changeMessage())));或map.values().forEach(v->v.replaceAll(m->m.setMessage(changeMessage()))); -
当你的意思是
forEach时不要使用peek。当您只对values()感兴趣时,不要使用entrySet()。显然,你只想做map.values() .forEach(list -> list.forEach(m -> m.setMessage(changeMessage())));
标签: java dictionary collections java-8 java-stream