Saya memiliki daftar Integer
list
dan dari list.stream()
saya ingin nilai maksimum. Apa cara yang paling sederhana? Apakah saya membutuhkan pembanding?
java-8
java-stream
pcbabu
sumber
sumber
Collections.max
..Jawaban:
Anda dapat mengonversi aliran menjadi
IntStream
:Atau tentukan pembanding tatanan alami:
Atau gunakan pengurangan operasi:
Atau gunakan kolektor:
Atau gunakan IntSummaryStatistics:
int max = list.stream().collect(Collectors.summarizingInt(Integer::intValue)).getMax();
sumber
int
, makamapToInt(...).max().getAsInt()
ataureduce(...).get()
ke rantai metodeint max = list.stream().reduce(Integer.MIN_VALUE, (a, b) -> Integer.max(a, b));
sumber
Versi lain bisa jadi:
int maxUsingCollectorsReduce = list.stream().collect(Collectors.reducing(Integer::max)).get();
sumber
Kode yang benar:
int max = list.stream().reduce(Integer.MIN_VALUE, (a, b) -> Integer.max(a, b));
atau
int max = list.stream().reduce(Integer.MIN_VALUE, Integer::max);
sumber
Dengan streaming dan kurangi
sumber
Integer::max
tetapi itu persis sama).Anda juga dapat menggunakan kode di bawah ini yang dipotong:
int max = list.stream().max(Comparator.comparing(Integer::valueOf)).get();
Alternatif lain:
list.sort(Comparator.reverseOrder()); // max value will come first int max = list.get(0);
sumber
int value = list.stream().max(Integer::compareTo).get(); System.out.println("value :"+value );
sumber
Anda bisa menggunakan int max = Stream.of (1,2,3,4,5) .reduce (0, (a, b) -> Math.max (a, b)); berfungsi untuk bilangan positif dan negatif
sumber
Integer.MIN_VALUE
membuatnya bekerja dengan angka negatif.