Lambda 표현 식 에서 흔히 볼 수 있 는 응용 장면
다음은 흔히 볼 수 있 는 응용 장면 을 소개 했다.이런 장면 에서 적시에 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/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.