使用Collectors.toMap返回LinkedHashMap

时间:2018-04-04 00:24:32

标签: java linkedhashmap collectors

我该如何转换:

return this.subjects.entrySet()
            .stream()
            .collect(Collectors.toMap(e -> getArtistryCopy(e.getKey()), Map.Entry::getValue));

要返回LinkedHashMap而不是地图吗?

如果您需要知道,this.subjectsLinkedHashMap<AbstractArtistries, ArrayList<AbstractCommand>>。 AbstractArtistry和命令是我制作的两个自定义对象。我需要维护订单。

getArtistryCopy()返回AbstractArtistry的副本(这是关键字)。

1 个答案:

答案 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));