簡體   English   中英

如何組合然后使用java8流來定位toMap

[英]How to groupby then toList the toMap using java8 stream

原始數據如下:

[
    { 'k1': 'gbv1', 'k2': 'v2' },
    { 'k1': 'gbv1', 'k2': 'v4' },
]

所需數據如下:

{
    'gbv1': { 'v2': true, 'v4': true },
}

即按k1分組,然后選擇k2值。

我目前擁有的:

examples.stream().collect(
    Collectors.groupingBy(Example::getK1,
        Collectors.mapping(Example::getK2,
                Collectors.toList())));

它返回k2的值列表而不是映射;

我大部分時間都使用javascript而且很容易做這樣的工作,因為我認為這是動態的。

使用toMap而不是mapping

Map<String,Map<String,Boolean>> map =
    examples.stream()
            .collect(Collectors.groupingBy(Example::getK1,
                     Collectors.toMap(Example::getK2,v->true,(v1,v2)->v1)));

這假設getK1()getK2()返回一個String

使用 Java 8

[英]Getting the stream object in Collectors toMap method using Method References in Java 8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM