gpt4 book ai didi

java - 在 java8 中使用 Stream groupingby 按字符串集合分组

转载 作者:搜寻专家 更新时间:2023-11-01 02:23:08 24 4
gpt4 key购买 nike

如何使用表达式 Stream groupingBy Java 8 的运行来完成这个?

我想转Set<String> allTextFileList包含:

20150101_00b667339f32fcff37db6e89aea53065.txt
20150101_06d0e76e4782cff3ce455feecf72b80d.txt
20150301_11f706c03860068e7e736ff943525504.txt
20150301_33719f3b98081b32e9ffd3b932e1902d.txt

Map<String, Set<String>> textFileListBydate

20150101 ->
- 20150101_00b667339f32fcff37db6e89aea53065.txt
- 20150101_06d0e76e4782cff3ce455feecf72b80d.txt

20150301 ->
- 20150301_11f706c03860068e7e736ff943525504.txt
- 20150301_33719f3b98081b32e9ffd3b932e1902d.txt

最佳答案

基本上,您希望按文件名的第一部分进行分组,即从开头到 "_" 的第一个索引的子字符串。

对于此任务,您可以使用 Collectors.groupingBy(classifier, downstream) .

  • classifier 是一个函数,用于确定如何对生成的 Map 中的对象进行分类。在这种情况下,函数将返回文件名的第一部分。
  • downstream 是一个 Collector,它减少所有具有相同分类器的值。在这种情况下,我们需要使用收集到 Set 的收集器,即 Collectors.toSet() .

代码:

Map<String, Set<String>> textFileListBydate = 
allTextFileList.stream()
.collect(groupingBy(s -> s.substring(0, s.indexOf('_')), toSet()));

关于java - 在 java8 中使用 Stream groupingby 按字符串集合分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33596468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com