爪哇2博客
爪哇2博客

收藏家.groupby示例:如何在java中进行分组

爪哇 收藏家.groupby()示例
在上一篇文章中,我们已经在Collector上看到了一些示例。在本文中,我们将通过示例查看Java 8 收藏家。 Groupby是Java 8中添加的另一个功能,它与SQL / Oracle非常相似。
让我们借助示例进一步了解:让我们如下创建模型类国家/地区:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
组织.Arpit.爪哇2blog;
 
上市 国家{
 
国家的名字;
人口;
 
上市 国家() {
  ();
}
上市 国家( 国家的名字, 人口) {
  ();
  这个.国家的名字 = 国家的名字;
  这个.人口=人口;
}
上市 得到CountryName() {
  返回 国家的名字;
}
上市 虚空 setCountryName( 国家的名字) {
  这个.国家的名字 = 国家的名字;
}
上市 得到Population() {
  返回 人口;
}
上市 虚空 setPopulation( 人口) {
  这个.人口 = 人口;
}
@覆写
上市 整型 hashCode() {
最后 整型 主要 = 31;
整型 结果 = 1;
结果 = 主要 * 结果
   + ((国家的名字 == 空值) ? 0 : 国家的名字.hashCode());
结果 = 主要 * 结果 + (整型) (人口 ^ (人口 >>> 32));
返回 结果;
}
@覆写
上市 布尔值 等于(目的 对象) {
如果 (这个 == 对象)
  返回 真正;
如果 (对象 == 空值)
  返回 ;
如果 (得到Class() != 对象.得到Class())
  返回 ;
国家 其他 = (国家) 对象;
如果 (国家的名字 == 空值) {
  如果 (其他.国家的名字 != 空值)
   返回 ;
} 其他 如果 (!国家的名字.等于(其他.国家的名字))
  返回 ;
如果 (人口 != 其他.人口)
  返回 ;
返回 真正;
}
 
上市 toString()
{
  返回 “ {”+国家的名字+“,”+人口+“}”;
}
}
 

让我们创建主类,在其中我们将使用Collectors.groupBy进行分组依据。
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
 
组织.Arpit.爪哇2blog;
 
进口 爪哇.数学.大十进制;
进口 爪哇.实用程序.数组;
进口 爪哇.实用程序.清单;
进口 爪哇.实用程序.地图;
进口 爪哇.实用程序..收藏家;
 
上市 爪哇8CollectorsGroupBy {
上市 静态的 虚空 主要([] args) {
 
  清单 项目 = 数组.asList( 国家(“印度”, 20000),
     国家(“中国”, 40000), 国家(“尼泊尔”, 30000),
     国家(“印度”, 50000), 国家(“中国”, 10000));
 
  //按国家/地区分组
  地图<, 清单> groupByCountry = 项目.().收藏(
    收藏家.分组(国家:: 得到CountryName));
 
  系统..打印(groupByCountry.得到(“印度”));
 
  //按CountryName分组并计算计数
  地图<, > 数数 = 项目.().收藏(
    收藏家.分组(国家:: 得到CountryName,收藏家.数数()));
 
  //按国家/地区分组并汇总人口
  系统..打印(数数);
  地图<, > 人口计数 = 项目.().收藏(
    收藏家.分组(国家:: 得到CountryName,
      收藏家.总结长(国家:: 得到Population)));
  系统..打印(人口计数);
}
}
 

在上课时,您将获得以下输出:

[{India,20000},{India,50000}]
{中国= 2,尼泊尔= 1,印度= 2}
{中国= 50000,尼泊尔= 30000,印度= 70000}

参考: 
//docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html


导入联系人

您可能还喜欢:

分享这个

作者

关注作者

相关文章

  • 在Java中将日期转换为LocalDate
    1月12日

    爪哇日期到LocalDate

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

  • 在Java中将LocalDate转换为Date
    1月11日

    迄今为止的Java LocalDate

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

  • 将流转换为Java中的列表
    12月31日

    爪哇流列表

    在本文中,我们将看到如何在Java中将Stream转换为List。在Java中,有多种方法可以将Stream转换为List。使用Collectors.toList()可以将Collectors.toList()传递给Stream.collect()方法,以在Java中将Stream转换为List。流’的collect方法对Stream和Collectors的元素执行可变的约简操作。toList()提供[…]

  • 在Java中将LocalDateTime转换为时间戳
    11月18日

    在Java中将LocalDateTime转换为时间戳

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

  • 8月28日

    爪哇 8流 API深入指南

    在这篇文章中,我们将看到Java 8流的深入概述,其中包含许多示例和练习。简介您可能认为Stream必须类似于InputStream或OutputStream,但是’并非如此。流表示支持顺序和并行聚合操作的一系列元素。流不存储[…]

  • 要映射的Java流列表
    4月26日

    要映射的Java流列表

    在本文中,我们将看到如何在Java 8中使用Stream将List转换为Map。’s toMap()可与Stream一起使用,以在Java中将List转换为Map。考虑一个名为Movie的类,它具有3个字段–ID,名称和流派[crayon-601b741adc0ed813347825 /]创建电影列表并将其转换为[…]

发表评论

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

订阅我们的新闻

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


成为朋友

©2020 爪哇2博客