0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Java Gold 例題 parallel 2

Last updated at Posted at 2024-08-13
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class GroupingByConcurrentExample {
	public static void main(String[] args) {

		Stream<Integer> numbers = Stream.of(1,3,5,10, -2).parallel();
  
		/* insert code */ nums = 
				numbers.collect(Collectors.groupingByConcurrent(n -> {
                    if(n % 2 == 0) return "even";
					else return "odd";
                }));
     
		System.out.println(nums);
	}
}

出力結果 1

{even=[10, -2], odd=[1, 3, 5]}

出力結果 2

{even=[-2, 10], odd=[5, 3, 1]}

insert codeに入力するコードとして適切なものはどれでしょうか

  1. Map<String, List<Integer>>

  2. Map<String, Integer>

  3. Set<String, Integer>

  4. ParallelStream<Map<String, List<Integer>>

  5. Optional<Map<String, List<Integer>>


正解
1 Map<String, List<Integer>>

groupingByConcurrentメソッドを使用することで、ストリーム内の要素を指定した分類関数に基づいてグループ化し、その結果をMapに収集します。
Mapのキーは分類関数の結果(この場合は "even" または "odd")、値はそのグループに属する要素のリストです。

Document groupingByConcurrent

public static <T,​K> Collector<T,​?,​ConcurrentMap<K,​List<T>>> groupingByConcurrent​(Function<? super T,​? extends K> classifier)

ストリーム内の要素を指定されたclassifier関数に基づいて分類します。
分類された結果はConcurrentMapとして返され、キーが分類結果、値がその分類に属する要素のリストになります。

Collector<T, ?, ConcurrentMap<K, List<T>>>
この部分は、メソッドがCollectorを返すことを示します。Collectorは、ストリームの要素を収集するためのオブジェクトです。返されるCollectorは、要素をConcurrentMap(並列で操作可能なMap)にグループ化し、キーKには分類の結果が入り、値には分類された要素Tのリストが入ります。

groupingByConcurrent​(Function<? super T, ? extends K> classifier)

要素を分類するための関数(分類関数)です。この関数は、ストリーム内の各要素Tを受け取り、それを分類するためのキーKを返します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?