Lambda 표현 식

4809 단어 Lambda표현 식
1.왜 Lambda 표현 식 을 사용 합 니까?
Lambda 는 익명 함수 입 니 다.Lambda 표현 식 을 전달 할 수 있 는 코드 로 이해 할 수 있 습 니 다.더욱 간결 하고 유연 한 코드 를 쓸 수 있다.더욱 치밀 한 코드 스타일 로 자바 의 언어 표 현 력 을 향상 시 켰 다.
lambda 를 사용 하기 전에 익명 내부 클래스 를 만 드 는 것 을 살 펴 보 겠 습 니 다.

new Thread(new Runnable() {
  @Override
  public void run() {
    System.out.println("  Runnable  ");
  }
});
lambda 표현 식:
new Thread()->System.out.println("Runnable 방법 실행");/참조 없 는 Lambda 표현 식
Idea 에서 lambda 를 변환 할 수 있 는 코드 를 만나면 회색 알림 이 있 습 니 다.alt+enter 를 누 르 면 자동 으로 변환 할 수 있 습 니 다.

2.람 다 문법
자바 8 에 새 연산 자'->'를 도 입 했 습 니 다.이 연산 자 는 화살표 연산 자 나 Lambda 연산 자 라 고 합 니 다.
화살표 연산 자 는 Lambda 표현 식 을 두 부분 으로 나 눕 니 다.
왼쪽:Lambda 표현 식 의 매개 변수 목록
오른쪽:Lambda 표현 식 에서 실행 할 기능,즉 Lambda 체
예시:
문법 형식 1:인자 가 없고 반환 값 이 없습니다.
Runnable r = () -> System.out.println("Hello World");
r.run();
문법 형식 2:인자 가 하나 있 고 반환 값 이 없습니다.

Consumer consumer = (x) -> System.out.println(x);
//    : x -> System. out.println(x);       ,      
consumer.accept("Hello");
문법 형식 3:두 개 이상 의 인자 가 있 고 반환 값 이 있 으 며 Lambda 체 에는 여러 개의 문구 가 있 습 니 다.

Comparator<Integer> comparator = (x, y) -> {
  System.out.println("Hello");
  return Integer.compare(x, y);
};
TreeSet<Integer> treeSet = new TreeSet<>(comparator);
문법 형식 4:Lambda 체 에 한 문장 만 있 으 면 return 과 대괄호 는 모두 생략 하고 쓰 지 않 을 수 있 습 니 다.Lambda 표현 식 의 매개 변수 목록 의 데이터 형식 은 생략 하고 쓰 지 않 을 수 있 습 니 다.JVM 컴 파일 러 는 문맥 을 통 해 데이터 형식 을 추정 할 수 있 기 때 문 입 니 다.즉,유형 추정 입 니 다.
Comparator com = (x, y) -> Integer .compare(x, y);
유형 에 대한 추측 은 사실 배열 에서 우 리 는 이미 사용 한 적 이 있다.

String[] strArr = {"a","b", "c"}; //     
//              
String [] strArr;
strArr = {"a","b", "c"}; 
//   List     :
List<String> list = new ArrayList<>(); 
3.함수 식 프로 그래 밍 인터페이스
위 에서 우리 가 본 lambda 표현 식 은 모두 인터페이스의 지원 에 의존 하고 lambda 표현 식 의 본질은 인터페이스 에 대한 실현 이다.이 인 터 페 이 스 는 함수 식 인터페이스,즉 인터페이스 에 추상 적 인 방법 만 있 는 인터페이스 라 고 한다.함수 식 인 터 페 이 스 는@Function Interface 주해 수식 을 사용 할 수 있 으 며,수 식 된 인 터 페 이 스 는 반드시 함수 식 인터페이스 여야 한 다 는 것 을 나타 낸다.

//               
@FunctionalInterface
public interface FuncTest {
  void accept(Object o);
}
함수 식 인터페이스 에 두 개 이상 의 방법 을 쓰 면 컴 파일 이 잘못 될 수 있 습 니 다.

우 리 는 함수 식 인터페이스의 사용 에 대해 실제 적 인 예 를 써 서 알 아 보 겠 습 니 다.

// 1.                  
@FunctionalInterface
public interface FuncTest {
  void operation(Integer x);
}

// 2.     ,    ,      
private static Integer operate(Integer a, FuncTest funcTest) {
  return funcTest.operation(a);
}

// 3.       
System.out.println(operate(1, (x) -> x + x)); //    2
우 리 는 세 번 째 단계 에서 야 함수 식 인터페이스의 실제 기능 을 정의 하고 두 개의 수 를 더 해서 결 과 를 되 돌려 주 는 것 을 볼 수 있다.lambda 의 가장 편리 한 점 은 바로 이것 입 니 다.코드 를 매개 변수 로 전달 하 는 것 이 매우 유연 하고 우리 의 코드 를 크게 간소화 하 는 것 입 니 다.
4.자바 8 에 내 장 된 4 가지 상용 함수 식 인터페이스
Consumer:소비 형 인터페이스
방법:void accept(T t);
Consumer consumer = x -> System.out.println(x);
consumer.accept("Hello"); // 인쇄 Hello
Supplier:공급 형 인터페이스
방법:T get();
Supplier supplier = () -> "Hello";
System.out.println(supplier.get()); // 인쇄 Hello
함수 형 인터페이스
방법:R apply(T t);
Function function = x -> "Hello " + x;
System.out.println(function.apply("World"));
Predicate:단언 형 인터페이스
방법:boolean test(T t);
Predicate predicate = x -> x == "Hello";
System.out.println(predicate.test("Hello"));
ava.util.function 은 자바 의 함수 식 프로 그래 밍 을 지원 하 는 여러 가지 종 류 를 포함 하고 있 습 니 다.이 가방 의 함수 식 인 터 페 이 스 는 다음 과 같 습 니 다.

5.총화
자바 8 이 lambda 표현 식 을 도입 한 것 은 함수 식 프로 그래 밍 언어 를 받 아들 인 사상 이다.예 를 들 어 scala 와 같은 것 은 함 수 를 1 등 시민 으로 보고 고급 함수 등 을 사용 할 수 있다.명령 식 프로 그래 밍 에 비해 함수 식 프로 그래 밍 은 명령 의 집행 보다 함수 의 계산 이 중요 하 다 는 것 을 강조 한다.프로 세 스 프로 그래 밍 에 비해 함수 식 프로 그래 밍 에서 함수 의 계산 은 수시로 호출 할 수 있다.
lambda 표현 식 은 코드 를 간결 하 게 보일 수 있 지만 어느 정도 코드 의 가 독성 과 디 버 깅 의 복잡성 을 증가 시 켰 기 때문에 사용 할 때 가능 한 한 팀 이 익숙 하 게 사용 하거나 아예 사용 하지 마 세 요.그렇지 않 으 면 유지 하 는 것 이 고 통 스 러 운 일 입 니 다.
이상 의 이 글 은 Lambda 표현 식 이 바로 편집장 이 여러분 에 게 공유 한 모든 내용 이라는 것 을 철저히 이해 하 게 해 드 립 니 다.여러분 에 게 참고 가 되 고 여러분 들 이 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기