kullanarak listenin değil boş eleman son Get lambdas ya da ben ilk değil boş eleman almak istiyorsanız Örneğin, ben bu yazabilir Java 8. başka özelliğini kullanarak kısa kod:Böyle bir şey yazmak, Java 7'de Java 8
public void someMethod(List<CustomObject> list) {
.....
CustomObject object = getFirstObject(list).orElseGet(/*handle this case*/);
.....
}
public Optional<CustomObject> getFirstObject(List<CustomObject> list) {
return list.stream().filter(object -> object != null).findFirst();
}
Belki birisi bu sorunu çözmek için nasıl biliyor? Bir Akış mutlaka sipariş çünkü Akış API hiçbir findLast
yöntem olduğunu
public Optional<CustomObject> getLastObject(List<CustomObject> list) {
return IntStream.range(0, list.size()).mapToObj(i -> list.get(list.size() - i - 1))
.filter(Objects::nonNull)
.findFirst();
}
Not:
Lambdalar kullanmak her zaman ** iyi bir fikir değildir. @Tunaki'nin cevabı göz önüne alındığında, okuyucunun lambda olmayan bir şekilde kullanılması daha nettir. – lschuetze
İlgili: [“Java 8'de ters sırayla bir listeden sıralı akış nasıl alınır”] (http://stackoverflow.com/q/29403614/2711488) ve [“Bir akışın son öğesini elde etmenin en etkili yolu ”] (Http://stackoverflow.com/q/27547519/2711488) – Holger
@lschuetze, Sadece lambdaların olasılıklarını öğreniyorum ve yeni özellikleri kullanarak basit problemlere nasıl karar verebilirim bilmek istiyorum – ZhenyaM