私はのリストを持っているInteger
list
からlist.stream()
、私は最大値を求めています。最も簡単な方法は何ですか?コンパレータは必要ですか?
回答:
ストリームをIntStream
次のいずれかに変換できます。
OptionalInt max = list.stream().mapToInt(Integer::intValue).max();
または、自然順序コンパレータを指定します。
Optional<Integer> max = list.stream().max(Comparator.naturalOrder());
または、reduce操作を使用します。
Optional<Integer> max = list.stream().reduce(Integer::max);
または、コレクターを使用します。
Optional<Integer> max = list.stream().collect(Collectors.maxBy(Comparator.naturalOrder()));
または、IntSummaryStatisticsを使用します。
int max = list.stream().collect(Collectors.summarizingInt(Integer::intValue)).getMax();
int
、それから、mapToInt(...).max().getAsInt()
または reduce(...).get()
メソッドチェーンを取得する場合
別のバージョンは次のとおりです。
int maxUsingCollectorsReduce = list.stream().collect(Collectors.reducing(Integer::max)).get();
正しいコード:
int max = list.stream().reduce(Integer.MIN_VALUE, (a, b) -> Integer.max(a, b));
または
int max = list.stream().reduce(Integer.MIN_VALUE, Integer::max);
int value = list.stream().max(Integer::compareTo).get();
System.out.println("value :"+value );