`

java8集合类聚合GroupingBy的妙用

阅读更多
    public void arrayToMapTest() {
    String tableStr = "db01.dbo.table_00,db02.dbo.table_00,db02.dbo.table_01,db02.dbo2.table_01,db02.dbo2.table_02";
    String[] sqlServerArr = tableStr.split(",");
    System.out.println(Arrays.toString(sqlServerArr));
    Map<String, List<String>> sqlServerMap =
        Arrays.stream(sqlServerArr)
              .collect(Collectors.groupingBy(dbTable ->
                                                 StringUtils.substring(dbTable, 0, dbTable.indexOf("."))));
    Map<String, List<String>> sqlServerMap2 =
        Arrays.stream(sqlServerArr)
              .collect(Collectors.groupingBy(dbTable -> StringUtils.substring(dbTable, 0, dbTable.lastIndexOf(".")),
                                             Collectors.mapping(k -> StringUtils.substring(k, k.lastIndexOf(".") + 1, k.length()),
                                                                Collectors.toList())));
    System.out.println(sqlServerMap.toString());
    System.out.println(sqlServerMap2.toString());
  }


输出如下:
[db01.dbo.table_00, db02.dbo.table_00, db02.dbo.table_01, db02.dbo2.table_01, db02.dbo2.table_02]
{db01=[db01.dbo.table_00], db02=[db02.dbo.table_00, db02.dbo.table_01, db02.dbo2.table_01, db02.dbo2.table_02]}
{db02.dbo=[table_00, table_01], db01.dbo=[table_00], db02.dbo2=[table_01, table_02]}
分享到:
评论

相关推荐

    java实现分组聚合

    这个主题通常与Java集合框架和流API紧密相关,特别是`GroupingBy`方法,它为数据分组提供了方便的接口。以下是对"java实现分组聚合"这一主题的详细解释。 首先,让我们了解Java中的分组概念。在Java中,我们经常...

    Java8 stream 中利用 groupingBy 进行多字段分组求和案例

    通过以上示例,我们可以看到Java 8的Stream API和`groupingBy`方法在处理数据分组和聚合时的强大功能。无论是简单的单字段分组,还是复杂的多字段分组,都能够有效地帮助我们对数据进行组织和分析。同时,结合其他...

    Stream_Java8.pdf

    Stream API作为Java 8的重要特性之一,极大地简化了集合处理的代码编写过程,提升了程序的可读性和效率。 ### Stream概述 Java 8引入的Stream API提供了一种更加高效且易于理解的方式来处理集合中的数据。它可以被...

    Java 8 常用语法教程

    统计集合中具有特定属性的元素数量,可以使用`groupingBy()`和`counting()`方法。例如,要统计`Rolemenu`对象按`roleid`分组的数量,先创建一个流,然后通过`groupingBy()`方法根据`Rolemenu::getRoleid`分组,再用`...

    java8Stream方法简介-源码.rar

    - 在示例中,源可能是`java8Stream方法简介-源码`中的某个Java集合,如ArrayList或LinkedList。 2. 中间操作(Intermediate Operations): - 中间操作不会立即执行,它们会构建一个操作序列,直到遇到终端操作时...

    讲透JAVAStream的collect用法与原理远比你想象的更强大

    在Java编程中,Stream API是Java 8引入的一个强大特性,极大地提高了代码的简洁性和可读性。在处理集合数据时,Stream API提供了一种声明式处理方式,使得程序员能够以更加流畅的方式处理数据。而`collect`操作是...

    684.682.JAVA基础教程_动态代理与Java8新特性-Stream的终止操作:收集(684).rar

    4. `Collectors.groupingBy()`:根据指定的函数对元素进行分组,返回一个Map,键是分组依据,值是该组的元素集合。 5. `Collectors.reducing()`:使用指定的BinaryOperator进行累积计算,例如求和、求最大值等。 ...

    java大作业之词频统计

    Java 8引入了Stream API,它提供了一种声明式处理数据的方式,适用于集合操作,如过滤、映射和聚合。在这个词频统计项目中,我们可能会用到`Stream`类的`filter()`(过滤特定单词)、`map()`(转换单词为特定格式)...

    hands-on-java8:动手 Java 8 公爵夫人

    7. **并行收集器**:Java 8的`Collectors`类提供了大量用于收集数据的方法,如`groupingBy()`, `summingInt()`等,支持并行流操作,能够充分利用多核处理器的优势提高程序性能。 8. **接口的私有方法和静态方法**:...

    java-434107.pdf

    Stream API为Java集合类提供了新的处理方式,使得开发者可以更简洁、直观地处理数据集合。 首先,Stream API可以让我们以声明式的方式处理数据。这意味着我们可以在不改变原始数据结构的情况下,以一种直观的方法来...

    都9102年了,你还用for循环操作集合吗

    在Java编程语言中,随着Java 8的发布,引入了许多新特性,其中之一就是Stream API,它极大地改变了我们处理集合的方式。传统的for循环在处理集合时虽然常见,但在某些情况下可能会显得繁琐,尤其是在需要进行复杂...

    java8_mart:Java的8.Grup

    8. **新的集合工厂方法**:Java 8为`List`, `Set`, `Map`等集合类增加了新的工厂方法,如`Collections.emptyList()`, `Collections.singleton()`, `Map.of()`等,简化了创建集合的操作。 9. **遍历和搜索**:`...

    java收集器用做高级货归约.pdf

    `collect()`方法是Java 8引入的,它用于将Stream转换为其他形式,如列表、集合或特定的聚合结果。`Collector`接口是`collect()`方法的参数,它定义了收集过程的规则,包括累积、合并和生成最终结果的策略。`...

    java Stream 流使用

    Java Stream 流是Java 8引入的一个重要特性,与Lambda表达式一起,为处理集合提供了新的方式。Stream 不是存储数据的容器,而是提供了一种对数据进行操作的抽象概念,它可以来源于数组、集合或其他数据源。Stream ...

    java8stream源码-java8-links:java8-links

    例如,Collectors.toList()可以将流转换为列表,Collectors.groupingBy()可以根据指定条件对元素进行分组。 “可完成的未来”(CompletableFuture)是Java 8中的异步编程工具,它表示一个可能还没有完成的异步计算...

    jdk1.8示例源码

    Stream API是Java 8中另一个重要的增强,它提供了丰富的集合操作,如过滤、映射、分组和聚合。Stream API使得处理大量数据变得更加优雅和高效,而且可以很好地进行并行计算。 ```java Map, Integer&gt; wordCount = ...

    java8stream源码-Streams:JavaStream概览

    - 选择合适的收集器进行数据聚合,如 `Collectors.toList()` 或 `Collectors.groupingBy()`。 通过深入了解 Java 8 Stream API 及其源码实现,开发者可以更有效地处理大数据,提高代码的可读性和可维护性。在实际...

    java8

    9. **新的聚合操作**:如`Collectors`类提供的各种收集器,用于将流转换为集合或其他数据结构,例如`groupingBy`用于分组,`summingInt`用于求和。 10. **并行数组操作**:`Arrays.parallelSort()`方法提供了对数组...

    用Java Steams创建数据透视表

    使用Java 8的`Collectors.groupingBy()`函数,我们可以根据`YearTeam`对象对`Player`列表进行分组。这将创建一个映射,其中键是`YearTeam`对象,值是一个包含对应年份和团队的所有球员的列表。接下来,我们可以...

    Lambda表达式.pdf

    示例中通过Lists.newArrayList()创建了学生对象的列表,并使用Lambda表达式进行了一系列操作,展示了如何结合使用Java集合类和Lambda表达式对集合数据进行操作。这种方式使代码更加简洁,易于理解和维护。 8. 测试...

Global site tag (gtag.js) - Google Analytics