当前位置:首页 > 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是一门面向对象的编程语言,掌握基础语法是入门的关键。需要了解变量、数据类型、运算符、控制结构(如if-else、for循环、while循环)、数组等概念。可以通过官方文…

java如何输入字符串

java如何输入字符串

使用 Scanner 类 在 Java 中,可以通过 java.util.Scanner 类来输入字符串。以下是一个示例代码: import java.util.Scanner; public c…

java如何连接mysql

java如何连接mysql

连接 MySQL 数据库的基本步骤 添加 MySQL 驱动依赖 在项目中引入 MySQL 的 JDBC 驱动。如果使用 Maven,在 pom.xml 中添加以下依赖: <dependency…

java如何编写接口

java如何编写接口

编写Java接口的基本语法 在Java中,接口通过interface关键字定义,可以包含抽象方法、默认方法、静态方法和常量。 public interface MyInterface {…

java如何打印数组

java如何打印数组

打印数组的方法 在Java中,打印数组有多种方式,以下是几种常见的方法: 使用Arrays.toString()方法 这种方法适用于一维数组,可以快速将数组转换为字符串形式输出: int[] a…

eclipse如何创建java

eclipse如何创建java

在Eclipse中创建Java项目 打开Eclipse后,选择菜单栏中的"File" -> "New" -> "Java Project"。在弹出的对话框中输入项目名称,确保"Use de…