Lambda 표현 식 에서 흔히 볼 수 있 는 응용 장면

28934 단어 자바Lambda표현 식
추천
  • 자바 등 전체 학습 자원 을 정선
  • 자바 전자 도서 자원 정선
  • 빅 데이터 학습 자원 정선
  • 자바 프로젝트 연습 정선
  • Lambda 표현 식 은 자바 8 이 도입 한 새로운 기능 으로 foreach 방법 과 결합 하여 더욱 편리 하 게 옮 겨 다 닐 수 있 습 니 다.이 밖 에 Runnable 류 를 대체 하여 코드 의 작성 을 크게 간소화 할 수 있 습 니 다.
    다음은 흔히 볼 수 있 는 응용 장면 을 소개 했다.이런 장면 에서 적시에 Lambda 표현 식 을 사용 하 는 것 이 일반적인 방식 보다 더욱 간결 하고 편리 하 다.
    목록 반복
    목록 의 모든 요 소 를 작 동 합 니 다.Lambda 표현 식 을 사용 하지 않 을 때 다음 과 같 습 니 다.
    List numbers = Arrays.asList(1, 2, 3, 4, 5);
    for (int element : numbers) {
       System.out.prinln(element);
    }

    Lambda 표현 식 사용 하기:
    List numbers = Arrays.asList(1, 2, 3, 4, 5);
    numbers.forEach(x -> System.out.println(x));

    단일 함수 만 호출 하여 목록 요 소 를 처리 하면 Lambda 표현 식 대신 더욱 간결 한 을 사용 할 수 있 습 니 다.
    List numbers = Arrays.asList(1, 2, 3, 4, 5);
    numbers.forEach(System.out::println);

    사건 감청
    Lambda 표현 식 을 사용 하지 않 음:
    button.addActionListener(new ActionListener(){
       @Override
       public void actionPerformed(ActionEvent e) {
           //handle the event
       }
    });

    Lambda 표현 식 을 사용 합 니 다.여러 문 구 를 작성 할 때 괄호 로 둘러싸 십시오:
    button.addActionListener(e -> {
       //handle the event
    });

    Predicate 인터페이스
    java.util.function 패키지 의 Predicate 인 터 페 이 스 는 필터 에 편리 하 게 사용 할 수 있 습 니 다.여러 대상 을 걸 러 내 고 같은 처리 논 리 를 실행 해 야 한다 면,이 같은 조작 을 filter 방법 에 패키지 하여 호출 자가 필터 조건 을 제공 하여 중복 사용 할 수 있 도록 할 수 있 습 니 다.
    Predicate 인 터 페 이 스 를 사용 하지 않 습 니 다.모든 대상 에 대해 필터 조건 과 처리 논 리 를 작성 해 야 합 니 다.
    List numbers = Arrays.asList(1, 2, 3, 4, 5);
    List words = Arrays.asList("a", "ab", "abc");
    numbers.forEach(x -> {
       if (x % 2 == 0) {
           //process logic
       }
    })
    words.forEach(x -> {
       if (x.length() > 1) {
           //process logic
       }
    })

    Predicate 인 터 페 이 스 를 사용 하여 같은 처리 논 리 를 filter 방법 에 밀봉 하고 중복 호출 합 니 다.
    public static void main(String[] args) {
       List numbers = Arrays.asList(1, 2, 3, 4, 5);
       List words = Arrays.asList("a", "ab", "abc");
       filter(numbers, x -> (int)x % 2 == 0);
       filter(words, x -> ((String)x).length() > 1);
    }
    public static void filter(List list, Predicate condition) {
       list.forEach(x -> {
           if (condition.test(x)) {
               //process logic
           }
       })
    }

    filter 방법 도 다음 과 같이 쓸 수 있 습 니 다.
    public static void filter(List list, Predicate condition) {
       list.stream().filter(x -> condition.test(x)).forEach(x -> {
           //process logic
       })
    }

    맵 맵
    Stream 대상 의 map 방법 을 사용 하여 원래 의 목록 을 Lambda 표현 식 을 통 해 다른 목록 으로 표시 하고 collect 방법 으로 List 형식 으로 변환 합 니 다.
    List numbers = Arrays.asList(1, 2, 3, 4, 5);
    List mapped = numbers.stream().map(x -> x * 2).collect(Collectors.toList());
    mapped.forEach(System.out::println);

    중합 감소
    reduce 작업 은 이원 연산 을 통 해 모든 요 소 를 집합 하여 최종 적 으로 결 과 를 얻 는 것 입 니 다.예 를 들 어 덧셈 을 사용 하여 목록 을 집합 하 는 것 은 목록 의 모든 요 소 를 누적 하여 합 친 것 이다.
    따라서,우 리 는 reduce 에 두 개의 인 자 를 받 는 Lambda 표현 식 을 제공 할 수 있 습 니 다.이 표현 식 은 하나의 이원 연산 에 해당 합 니 다.
    List numbers = Arrays.asList(1, 2, 3, 4, 5);
    int sum = numbers.stream().reduce((x, y) -> x + y).get();
    System.out.println(sum);

    Runnable 대신
    스 레 드 를 만 드 는 예 를 들 어 Runnable 류 의 코드 를 사용 하면 다음 과 같 습 니 다.
    Runnable r = new Runnable() {
       @Override
       public void run() {
           //to do something
       }
    };
    Thread t = new Thread(r);
    t.start();

    Lambda 표현 식 사용 하기:
    Runnable r = () -> {
       //to do something
    };
    Thread t = new Thread(r);
    t.start();

    또는 더욱 치밀 한 형식 을 사용한다.
    Thread t = new Thread(() -> {
       //to do something
    });
    t.start;

    저자:Wray Zhenghttp://www.codebelief.com/article/2018/01/java-lambda-expression-common-application-scenarios/

    좋은 웹페이지 즐겨찾기