Giriş
BinaryFunction arayüzünden kalıtır.
constructor - lambda
Örnek
Şöyle yaparız.
Örnek
Şöyle yaparız.
BinaryFunction arayüzünden kalıtır.
constructor - lambda
Örnek
Şöyle yaparız.
// result = operation.apply(a, b);
int result = ((BinaryOperator<Integer>) ((a, b) -> a * b)).apply(2, 2);
apply metoduÖrnek
Şöyle yaparız.
BinaryOperator<Integer> otherMethod = ...;
int a = 6;
int b = 7;
int c = otherMethod.apply(a,b);
maxBy metoduİki nesnenin en büyük olanını döner.
Örnek - En Büyük Olanı Çoklu Alana Göre Seçme
Şöyle yaparız. Burada BinaryOperator.maxBy() kullanımı önemli. Eğer getID() aynıysa önce getDate() en büyük olan seçilir. getDate() aynıysa getWeightedNumber() en büyük olan seçilir.
return new ArrayList<MyEntity>(
Stream.concat(listOne.stream(), listTwo.stream())
.collect(Collectors.toMap(MyEntity::getId, Function.identity(),
BinaryOperator.maxBy(Comparator.comparing(MyEntity::getDate)
.thenComparing(MyEntity::getWeightedNumber))))
.values());
Örnek
Elimizde listInfo listesi olsun. Bu listeyi önce bir tarihten küçüklüğe göre sırayalıp aralarından en büyük değeri seçmek için şöyle yaparız.
List<Info> listResult = Stream.concat(
listInfo.stream()
.filter(info -> info.getDate().getTime() < date.getTime())
.collect(Collectors.toMap(Info::getGroupId, Function.identity(),
BinaryOperator.maxBy(Comparator.comparing(Info::getDate))))
.values().stream(),
listInfo.stream()
.filter(info -> info.getDate().getTime() >= date.getTime())
)
.collect(Collectors.toList());
Hiç yorum yok:
Yorum Gönder