Giriş
Şu satırı dahil ederiz.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Şu satırı dahil ederiz.
import java.util.function.Function;
Java 8 ile şu functional programming için şu arayüzler geliyor.Function — it takes one argument and returns a resultTek parametre alan ve sonuç dönen bir metodu temsil eder. Şöyle düşünülebilir. T tpini alır R tipini döner.
Consumer — it takes one argument and returns no result (represents a side effect)
Supplier — it takes no arguments and returns a result
Predicate — it takes one argument and returns a boolean
BiFunction — it takes two arguments and returns a result
BinaryOperator — it is similar to a BiFunction, taking two arguments and returning a result. The two arguments and the result are all of the same types
UnaryOperator – it is similar to a Function, taking a single argument and returning a result of the same type
_ _ _ _ _ _ _
| |
T --> | function | --> R
|_ _ _ _ _ _ _|
constructor - lambdaŞöyle yaparız.
Function<String, Boolean> functionTest = str -> str.length()> 5;
System.out.println(functionTest.apply("Function"));
constructor - üye metodŞöyle yaparız.
public class MethodRefs {
Function<MethodRefs, String> f = MethodRefs::getValue;
public String getValue() {
return "4"; }
...
}
constructor - static metoduŞöyle yaparız.
public class MethodRefs {
Function<MethodRefs, String> f = MethodRefs::getValueStatic;
public static String getValueStatic(MethodRefs smt) {
return smt.getValue();
}
...
}
andThen metoduİki tane Function nesnesini birleştirir. Önce ilk Function çalışır ve daha sonra ikinci Function çalışır.
Örnek
Şöyle yaparız
Function<Double, Double> f1 = price -> price * 0.8;Function<Double, String> f2 = price ->String.format("Discounted Price : %s ", price);Function<Double, String> getDiscountedPriceTag = f1.andThen(f2);var discountedPrice = getDiscountedPriceTag.apply(100.0);//Discounted Price : 80.0
identity metodu
Girdi parametresini aynen döner.
Örnek
Şöyle yaparız.
Elimizde bir Foo seti olsun.
Elimizde sayılar barındıran bir liste olsun.
Person sınıfının equals() ve hashCode() metodları olduğunu varsayalım. Şöyle yaparız
Örnek
Şöyle yaparız.
Map<Integer,Foo> myMap =
fooList.stream().collect(Collectors.toMap(Foo::getId, Function.identity()));
ÖrnekElimizde bir Foo seti olsun.
Set<Foo> set = ...;
Bu seti Map'e çevirmek istiyoruz. key olarak nesnenin hashCode alanını, value olarak nesnenin kendisini kullanmak istiyoruz. Şöyle yaparız.Map<Integer, Foo> map = list.stream()
.collect(Collectors.toMap(
Object::hashCode,
Function.identity()));
Örnek - frequency mapElimizde sayılar barındıran bir liste olsun.
List<Integer> numbers = ...;
Bu listeyi frekans map'ine çevirmek için şöyle yaparız.Map<Integer, Long> countFrequencies = numbers.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Örnek - frequency map
Person sınıfının equals() ve hashCode() metodları olduğunu varsayalım. Şöyle yaparız
List<Person> people = Arrays.asList(new Person("Steve"), new Person("Steve"),
new Person("Ben"), new Person("Ben"), new Person("Steve"),
new Person("Steve"));
Map<Person, Long> map = people.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Hiç yorum yok:
Yorum Gönder