我该如何转换:
return this.subjects.entrySet()
.stream()
.collect(Collectors.toMap(e -> getArtistryCopy(e.getKey()), Map.Entry::getValue));
要返回LinkedHashMap而不是地图吗?
如果您需要知道,this.subjects
是LinkedHashMap<AbstractArtistries, ArrayList<AbstractCommand>>
。 AbstractArtistry和命令是我制作的两个自定义对象。我需要维护订单。
getArtistryCopy()
返回AbstractArtistry的副本(这是关键字)。
答案 0 :(得分:2)
您可以使用 <hexam>
<exam>
<weightage>2</weightage>
<examid>1</examid>
<responseoption>
<opt1>kiwi</opt1>
<opt2>lemon</opt2>
</responseoption>
<selectedoption>
<opt2>lemon</opt2>
</selectedoption>
</exam>
<exam>
<weightage>3</weightage>
<examid>2</examid>
<responseoption>
<opt1>apple</opt1>
<opt2>orange</opt2>
</responseoption>
<selectedoption>
</selectedoption>
</exam>
</hexam>
Supplier
来接受Map
。它还需要一个merge
函数来解决重复键之间的冲突。
return this.subjects.entrySet()
.stream()
.collect(Collectors.toMap(e -> getArtistryCopy(e.getKey()),
Map.Entry::getValue,
(val1, val2) -> yourMergeResultHere,
LinkedHashMap::new));