Stream
groupingBy
これを完了するためにJava8の式操作を使用するにはどうすればよいですか?
私は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
同じ分類子を持つすべての値を減らすaです。この場合、我々はに収集するコレクターを使用する必要があるSet
、すなわちCollectors.toSet()
。コード:
Map<String, Set<String>> textFileListBydate =
allTextFileList.stream()
.collect(groupingBy(s -> s.substring(0, s.indexOf('_')), toSet()));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加