람다 및 함수형 프로그래밍 - Java 11
26218 단어 javacodenewbieprogrammingtutorial
람다와 기능적 인터페이스
간단한 람다 작성
람다 예제
public class Animal {
private String especie;
private boolean podeSaltar;
private boolean podeNadar;
public Animal(String nomeDaEspecie, boolean saltador, boolean nadador){
especie = nomeDaEspecie;
podeSaltar = saltador;
podeNadar = nadador;
}
public boolean podeSaltar() { return podeSaltar; }
public boolean podeNadar() { return podeNadar; }
public String toString() { return especie; }
}
public interface AnalisadorDeAnimal {
boolean teste(Animal a);
}
import java.util.ArrayList;
import java.util.List;
public class TraditionalSearch {
public static void main(String[] args) {
// lista de animais
List<Animal> animais = new ArrayList<Animal>();
animais.add(new Animal("peixe", false, true));
animais.add(new Animal("canguru", true, false));
animais.add(new Animal("coelho", true, false));
animais.add(new Animal("tartaruga", false, true));
// imprime os animais verificados
imprimir(animais, new VerificaSeSaltador());
}
private static void imprimir(List<Animal> animais, Verificador verificador) {
for (Animal animal : animais) {
// verificando
if (verificador.verificar(animal)) {
System.out.print(animal + " ");
}
}
System.out.println();
}
}
canguru coelho
// imprime os animais que podem saltar
imprimir(animais, animal -> animal.podeSaltar());
또는
// imprime os animais que podem nadar
imprimir(animais, animal -> animal.podeNadar());
람다 구문
animal -> animal.podeSaltar()
(Animal animal) -> {return a.podeSaltar();}
기능적 인터페이스 소개
기능적 인터페이스는 하나의 추상 메서드만 있는 인터페이스입니다.
술부
public interface Predicate<T> {
boolean test(T t);
}
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
public class UsoDoPredicate {
public static void main(String[] args) {
List<Animal> animais = new ArrayList<>();
animais.add(new Animal("peixe", false, true));
animais.add(new Animal("canguru", true, false));
print(animais, a -> a.podeSaltar());
}
private static void print(List<Animal> animais, Predicate<Animal> verificador) {
for (Animal animal : animais) {
if (verificador.test(animal))
System.out.print(animal + " ");
}
System.out.println();
}
}
canguru
소비자
public interface Consumer<T> {
void accept(T t)
}
import java.util.function.Consumer;
public class UsoDoConsumer {
public static void main(String[] args) {
Consumer<String> consumer = x -> System.out.println(x);
print(consumer, "Hello World");
}
private static void print(Consumer<String> consumer, String value) {
consumer.accept(value);
}
}
Hello World
공급자
public interface Supplier<T> {
T get();
}
import java.util.function.Supplier;
public class UsoDoSupplier {
public static void main(String[] args) {
Supplier<Integer> number = () -> 42;
System.out.println(returnNumber(number));
}
private static int returnNumber(Supplier<Integer> supplier) {
return supplier.get();
}
}
42
비교기
import java.util.Arrays;
import java.util.Comparator;
public class UsoDoComparator {
public static void main(String[] args) {
Integer [] array = {4, 1, 7, 2, 5};
print(array, (i1, i2) -> i1 - i2);
}
public static void print(Integer [] array, Comparator<Integer> comparator) {
Arrays.sort(array, comparator);
System.out.println(Arrays.toString(array));
}
}
[1, 2, 4, 5, 7]
Lambda에서 변수 작업
Lambda로 API 호출
import java.util.ArrayList;
import java.util.List;
public class ExemploUsandoLambdasEmAPI {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("Joao");
names.add("Jose");
names.add("Maria");
System.out.println("Nomes: " + names);
names.removeIf(name -> !name.startsWith("J"));
System.out.println("Nomes iniciando com J: " + names);
names.add("Araci");
names.add("Ze");
System.out.println("\nNomes: " + names);
names.sort((name1, name2) -> name1.compareTo(name2));
System.out.println("Nomes ordenados: " + names);
System.out.println("\nImprimindo novamente");
names.forEach(name -> System.out.println(name));
}
}
Nomes: [Joao, Jose, Maria]
Nomes iniciando com J: [Joao, Jose]
Nomes: [Joao, Jose, Araci, Ze]
Nomes ordenados: [Araci, Joao, Jose, Ze]
Imprimindo novamente
Araci
Joao
Jose
Ze
REMOVEIF()
종류()
각각()
Reference
이 문제에 관하여(람다 및 함수형 프로그래밍 - Java 11), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jcarlosvale/lambdas-and-functional-programming-java-11-2j6d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)