当前位置:首页 > Java

java如何分组

2026-03-20 11:36:43Java

分组方法概述

在Java中,分组操作通常涉及将集合中的元素按照特定条件分类。常见的实现方式包括使用Stream APICollectors.groupingBy()或手动遍历处理。以下是几种典型场景的实现方法。

使用Stream API分组

通过Collectors.groupingBy()可以快速实现分组。假设有一个List<Person>需要按年龄分组:

List<Person> people = Arrays.asList(
    new Person("Alice", 25),
    new Person("Bob", 30),
    new Person("Charlie", 25)
);

Map<Integer, List<Person>> groupedByAge = people.stream()
    .collect(Collectors.groupingBy(Person::getAge));

// 输出: {25=[Alice, Charlie], 30=[Bob]}

多级分组

支持嵌套分组条件,例如先按年龄再按姓名长度分组:

Map<Integer, Map<Integer, List<Person>>> multiLevelGroup = people.stream()
    .collect(Collectors.groupingBy(
        Person::getAge,
        Collectors.groupingBy(p -> p.getName().length())
    ));

自定义分组逻辑

通过Lambda表达式或方法引用定义分组规则。例如按奇偶年龄分组:

Map<String, List<Person>> oddEvenGroup = people.stream()
    .collect(Collectors.groupingBy(
        p -> p.getAge() % 2 == 0 ? "Even" : "Odd"
    ));

手动遍历实现分组

若不使用Stream,可通过遍历集合手动构建分组映射:

Map<Integer, List<Person>> manualGroup = new HashMap<>();
for (Person person : people) {
    manualGroup.computeIfAbsent(person.getAge(), k -> new ArrayList<>())
               .add(person);
}

分组后处理

分组后可对结果进一步操作,例如统计每组的数量:

java如何分组

Map<Integer, Long> countByAge = people.stream()
    .collect(Collectors.groupingBy(
        Person::getAge,
        Collectors.counting()
    ));

注意事项

  • 分组键为null时,默认归类到HashMapnull键中。
  • 线程安全场景需使用ConcurrentHashMap或同步处理。
  • 大数据量分组时,考虑并行流(.parallelStream())提升性能。

以上方法覆盖了从简单到复杂的分组需求,根据具体场景选择合适实现即可。

标签: java
分享给朋友:

相关文章

java如何

java如何

Java 基础语法 Java 是一种面向对象的编程语言,语法相对严谨。每个 Java 程序必须包含一个 main 方法作为程序入口。以下是一个简单的 Java 程序示例: public class…

java如何输出

java如何输出

输出到控制台 使用 System.out.println() 方法输出内容到控制台,适用于调试或简单信息展示。 示例代码: System.out.println("Hello, World!")…

如何卸载java

如何卸载java

卸载Java的步骤 Windows系统卸载方法 打开控制面板,选择“程序和功能”或“卸载程序”。在列表中找到Java相关条目(如“Java 8 Update 251”),右键选择卸载并跟随向导完成操…

java如何上传文件

java如何上传文件

使用HttpURLConnection上传文件 在Java中,可以通过HttpURLConnection实现文件上传功能。需要设置请求头为multipart/form-data,并构建包含文件数据的请…

java如何创建项目

java如何创建项目

使用IDE创建Java项目(以IntelliJ IDEA为例) 打开IntelliJ IDEA,选择“New Project”。 在左侧菜单中选择“Java”,确保已配置JDK(若无需手动添加)。 勾…

如何编写java

如何编写java

编写Java程序的基本步骤 安装Java开发工具包(JDK),确保系统环境变量配置正确。可以从Oracle官网下载最新版本的JDK并进行安装。 选择一个合适的集成开发环境(IDE),如Eclipse…