Akımlar hakkında bilgi edinmek ve bir sorunla karşılaşmaya çalışıyorum: Bir listenin minimum değerini almak ve bir int değişkenine atamak istiyorum.Java 8 akışları "ifPresent"
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
int smallest = list.stream().min(Integer::compareTo).get();
System.out.println(smallest);
Bu iyi çalışıyor ve ben bir sonucu olarak 1
olsun: Bunun için aşağıdaki yaptım. Sorun, IDE'nin'un .isPresent
denetlemeden önce çağrıldığını bildirmesidir. i biraz farklı ifPresent
yöntemi kullanmış ve çalıştı gidermek için aşağıdakileri yapın:
int smallest = list.stream().min(Integer::compareTo).ifPresent(integer -> integer);
Ben uyarıyı almak için maalesef bu işe yaramazsa: Bad return type in Lambda, Integer cannot be converted to void.
sorum nihayet: Ben dk değer atayabilirsiniz nasıl ifPresent'i kontrol eden int smallest
değişkeni? İşte
Öncelikli olarak neden bir Tamsayı aldığınızı anlamanız gerekir: akış boş olabilir ve bu nedenle herhangi bir minimum değer olmayabilir. Ardından, akış boşsa, sonuç olarak ne elde etmek istediğinize karar vermeniz gerekir. Ardından, ne istediğinizi öğrendikten sonra, Optional'ın belgelerine bakarak bu sonucu elde etmek için doğru yolu seçebileceksiniz. –
'ifPresent', giriş değerini tüketen ve hiçbir şey döndürmeyen argümanı olarak bir" Tüketici "alır. –