我该如何将这个转换:
return this.subjects.entrySet()
.stream()
.collect(Collectors.toMap(e -> getArtistryCopy(e.getKey()), Map.Entry::getValue));
如何返回一个 LinkedHashMap 而不是一个 map?
如果您需要知道,this.subjects
是一个 LinkedHashMap<AbstractArtistries, ArrayList<AbstractCommand>>
。AbstractArtistry 和 command 是我创建的两个自定义对象。我需要保持顺序。
getArtistryCopy()
返回 AbstractArtistry(也就是 key)的一个副本。
(a, b) -> b
,它会覆盖先前的值,就像使用Map.put
一样。不过,由于 OP 在映射键,我认为他们可能应该考虑一下他们实际想要用合并函数来做什么。(我认为,人们默认的行为可能是(a, b) -> b)
,但是实际上toMap(Function, Function)
会在遇到重复的键时抛出异常。) - RadiodeftoMap
的唯一重载采用了一个合并函数和一个Supplier
。 - rgettman