爪哇2博客
爪哇2博客

要映射的竞彩篮球分析流列表

要映射的竞彩篮球分析流列表

在本文中,我们将看到如何在竞彩篮球分析 8中使用Stream将List转换为Map。

收藏家’s 地图() can be used with Stream to convert 清单 to 地图 in 爪哇.

Consider a 类 名称d 电影 which have 3 fields – id, 名称 and 类型

爪哇
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
组织.Arpit.爪哇2blog;
 
上市 电影 {
 
    私人的 名称;
    私人的 类型;
 
    上市 电影( 名称, 类型) {
        ();
        这个.名称 = 名称;
        这个.类型 = 类型;
    }
 
    上市 getName() {
        返回 名称;
    }
 
    上市 虚空 setName( 名称) {
        这个.名称 = 名称;
    }
 
    上市 getGenre() {
        返回 类型;
    }
 
    上市 虚空 setGenre( 类型) {
        这个.类型 = 类型;
    }
 
    @Override
    上市 toString() {
        返回 “电影[name =“ + 名称 + “,genre =” + 类型 + “]”;
    }
}
 

Create a list of movies and convert with to map with 名称 as key and 类型 as value.

创建一个名为 ConvertListToMapMain

爪哇
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
组织.Arpit.爪哇2blog;
 
进口 爪哇.实用程序.数组列表;
进口 爪哇.实用程序.清单;
进口 爪哇.实用程序.地图;
进口 爪哇.实用程序..收藏家;
 
上市 ConvertListToMapMain {
 
    上市 静态的 虚空 主要([] args) {
        清单<Movie> 电影列表=getListOfMovies();
 
        地图<, > 电影地图 = 电影列表.()
                  .收藏(收藏家.地图((m)->m.getName(), (m)->m.getGenre()));
        系统..打印(电影地图);
    }  
 
    上市 静态的 清单<Movie> getListOfMovies()
    {
        清单<Movie> 电影列表= 数组列表<>();
 
        电影 m1= 电影(“3个白痴”,“喜剧”);
        电影 m2= 电影(“星际”,“科幻”);
        电影 m3= 电影(“阿甘正传”,“喜剧”);
        电影 m4= 电影(“矩阵”,“科幻”);
        电影 m5= 电影(“宿醉”,“喜剧”);
 
        电影列表.(m1);
        电影列表.(m2);
        电影列表.(m3);
        电影列表.(m4);
        电影列表.(m5);
 
        返回 电影列表;
    }
}
 

输出:

{星际=科幻,矩阵=科幻,宿醉=喜剧,森林风俗=喜剧,3个白痴=喜剧}

电影地图 包含名称作为键,类型包含值。
我们也可以使用 方法参考 而不是lamda表达式。

爪哇
1
2
3
4
 
地图<, > 电影地图 = 电影列表.()
                  .收藏(收藏家.地图(电影:: getName, 电影:: getGenre()));
 

如果密钥重复,该怎么办?

In case, duplicate keys are present, then it will throw 爪哇.lang.IllegalStateException exception.

让’s说我们有两部电影的名字 Matrix

爪哇
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
上市 静态的 清单<Movie> getListOfMovies()
    {
        清单<Movie> 电影列表= 数组列表<>();
 
        电影 m1= 电影(“3个白痴”,“喜剧”);
        电影 m2= 电影(“星际”,“科幻”);
        电影 m3= 电影(“阿甘正传”,“喜剧”);
        电影 m4= 电影(“矩阵”,“科幻”);
        电影 m5= 电影(“矩阵”,“喜剧”);
 
        电影列表.(m1);
        电影列表.(m2);
        电影列表.(m3);
        电影列表.(m4);
        电影列表.(m5);
 
        返回 电影列表;
    }
 

再次运行ConvertListToMapMain时,将获得以下输出:
输出:

线程异常“main”java.lang.IllegalStateException:重复的密钥科幻
在java.util.stream.Collectors.lambda $ throwingMerger $ 0(Collectors.java:133)
在java.util.HashMap.merge(HashMap.java:1254)
在java.util.stream.Collectors.lambda $ 地图 $ 58(Collectors.java:1320)
在java.util.stream.ReduceOps $ 3ReducingSink.accept(ReduceOps.java:169)
在java.util.ArrayList $ 数组列表Spliterator.forEachRemaining(ArrayList.java:1382)
在java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
在java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
在java.util.stream.ReduceOps $ ReduceOp.evaluateSequential(ReduceOps.java:708)
在java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
在java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:566)
在org.arpit.java2blog.ConvertListToMapMain.main(ConvertListToMapMain.java:14)

To resolve 这个 issue, we need to pass merge BinaryOperator function to 收藏家.toMap().

爪哇
1
2
3
4
5
6
 
地图<, > 电影地图 = 电影列表.()
        .收藏(收藏家.地图((m)->m.getName(), (m)->m.getGenre(),
                (旧值,新Value) -> 新Value
        ));
 

再次运行ConvertListToMapMain时,将获得以下输出:
输出:

{矩阵=喜剧,星际=科幻,森林模式=喜剧,3个白痴=喜剧}

如果您想要特定的地图,例如 树状图?

你可以通过 构造方法参考 to 收藏家.toMap() to get specific map.

爪哇
1
2
3
4
5
6
7
 
地图<, > 电影地图 = 电影列表.()
                  .收藏(收藏家.地图( (m)->m.getName(), (m)->m.getGenre(),
                          (旧值,新Value) -> 新Value
                          ,树状图::
                          ));
 

再次运行ConvertListToMapMain时,将获得以下输出:
输出:

{3 idiots =喜剧,Forest gump =喜剧,星际=科幻,Matrix =喜剧}

As you can see, we have 树状图 which is sorted by 名称.

Get multiMap with 收藏家.groupingBy()

如果您希望按类型将电影分组为键,将名称作为值分组,则可以使用 收藏家.groupingBy() and 收藏家.mapping as below:

爪哇
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
组织.Arpit.爪哇2blog;
 
进口 爪哇.实用程序.数组列表;
进口 爪哇.实用程序.清单;
进口 爪哇.实用程序.地图;
进口 爪哇.实用程序..收藏家;
 
上市 ConvertListToMapMain {
 
    上市 静态的 虚空 主要([] args) {
        清单<Movie> 电影列表=getListOfMovies();
 
        地图<, 清单<String>> filmsGenMap = 电影列表.()
                  .收藏(收藏家.分组(电影:: getGenre
                                                ,收藏家.映射(电影:: getName, 收藏家.到清单())));
        系统..打印(filmsGenMap);
    }  
 
    上市 静态的 清单<Movie> getListOfMovies()
    {
        清单<Movie> 电影列表= 数组列表<>();
 
        电影 m1= 电影(“3个白痴”,“喜剧”);
        电影 m2= 电影(“星际”,“科幻”);
        电影 m3= 电影(“阿甘正传”,“喜剧”);
        电影 m4= 电影(“矩阵”,“科幻”);
        电影 m5= 电影(“宿醉”,“喜剧”);
 
        电影列表.(m1);
        电影列表.(m2);
        电影列表.(m3);
        电影列表.(m4);
        电影列表.(m5);
 
        返回 电影列表;
    }
 
}
 

输出:

{喜剧= [3个白痴,森林小伙子,宿醉],科幻= [星际,矩阵]}

As you can see, filmsGenMap has 类型 as key and list of movies 名称 as value.

锻炼

Given a list of 雇员 objects, you need to convert list to 地图 with 名称 as key and 年龄 as value. In case, there are duplicate keys, then you need to preserve old value.
这是Employee类的定义。

爪哇
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
组织.Arpit.爪哇2blog;
 
上市 雇员 {
 
     名称;
    整型 年龄;
 
    上市 雇员( 名称,整型 年龄) {
        ();
        这个.名称 = 名称;
        这个.年龄=年龄;
    }
 
    上市 getName() {
        返回 名称;
    }
 
    上市 虚空 setName( 名称) {
        这个.名称 = 名称;
    }
 
    上市 整型 getAge() {
        返回 年龄;
    }
 
    上市 虚空 setAge(整型 年龄) {
        这个.年龄 = 年龄;
    }
}
 

那’关于要映射的竞彩篮球分析 Stream 清单的全部内容


导入联系人

您可能还喜欢:

分享这个

作者

关注作者

相关文章

  • 在竞彩篮球分析中将日期转换为LocalDate
    1月12日

    爪哇日期到LocalDate

    在这篇文章中,我们将看到如何在竞彩篮球分析中将Date转换为LocalDate。有时,我们可能需要将Date转换为新的竞彩篮球分析 8 API,反之亦然。在竞彩篮球分析中,有多种将Date转换为LocalDate的方法。另请参见:使用Date类的[InInstant()方法将竞彩篮球分析中的LocalDate转换为Date…]

  • 在竞彩篮球分析中将LocalDate转换为Date
    1月11日

    迄今为止的竞彩篮球分析 LocalDate

    在这篇文章中,我们将看到如何将LocalDate转换为Date。 爪哇 8引入了许多有关日期和时间的新API。有多种方法可以将竞彩篮球分析 LocalDateTime转换为日期。使用Instant对象您可以使用来自Zone的Instant对象将LocalDate转换为Date。这是 […]

  • 在竞彩篮球分析中将LocalDateTime转换为时间戳
    11月18日

    在竞彩篮球分析中将LocalDateTime转换为时间戳

    在本文中,我们将如何将LocalDateTime转换为Timestamp。在学习如何将localdatetime转换为时间戳之前,让我们了解LocalDateTime和Timestamp,并了解这种转换的重要性。 LocalDateTime LocalDateTime在竞彩篮球分析 8中已引入。LocalDateTime可以导入时间包:import 爪哇.time.LocalDateTime; LocalDateTime是使用的不可变对象[…]

  • 2月29日

    爪哇长到字符串

    在本文中,我们将看到如何在竞彩篮球分析中将long转换为String。有很多方法可以将long转换为String.Let’s一一看到。使用Long.toString()可以使用Long类的toString()方法将long转换为String。 [crayon-601b3d9d20bf9791261961 /]如果Long可以为空,而您不’t want to […]

  • 在竞彩篮球分析中将LocalDateTime转换为Date
    15 May

    爪哇 LocalDateTime到日期

    在这篇文章中,我们将看到如何将LocalDateTime转换为Date。 爪哇 8引入了许多有关日期和时间的新API。有多种方法可以将竞彩篮球分析 LocalDateTime转换为日期。使用Instant对象您可以使用Instantd对象将LocalDateTime转换为日期,该对象可以从ZonedDateTime中获取。这是 […]

  • 10月20日

    要设置的竞彩篮球分析数组

    在本文中,我们将学习竞彩篮球分析数组设置转换。有很多方法可以将数组转换为set。 1.使用竞彩篮球分析 8’s Stream如果您使用的是竞彩篮球分析 8,建议您使用此方法。 [crayon-601b3d9d3af7c644850055 /]输出[John,Martin,Mary] 2.使用HashSet构造函数()我们可以直接调用HashSet‘s的java构造函数set […]

Comments

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


让’s be Friends

©2020 爪哇2博客