더 적은 비용으로 더 많은 작업 수행: Java 8 람다 표현식
람다 표현식을 사용하면 Java 코드를 더 읽기 쉽고, 더 강력하고, 더 읽기 쉽게 만들 수 있습니다.
프로그래밍 언어에 대한 비판 중 하나는 특정 처리를 수행하기 위해 작성된 명령어의 수이며 때로는 많은 코드를 작성해야 합니다. 람다 표현식은 몇 가지 경우에 대해 이 문제를 해결했으며 C#이 수년 동안 그랬던 것처럼 Java를 더 강력하고 쉽게 만듭니다.
Lambda 표현식은 Java SE 8의 새로운 기능이며 이 릴리스에 추가된 가장 주목할만한 기능입니다. 람다 식은 이러한 식을 사용하는 메서드와 인터페이스를 나타내는 보다 명확한 방법을 제공합니다. 또한 람다 표현식은 목록을 탐색하고 필터링하고 컬렉션에서 데이터를 추출하는 것을 더 쉽게 만들어 Java 객체 컬렉션을 개선합니다. 성능 기능은 모든 새로운 최신 컴퓨터에서 사용할 수 있는 멀티태스킹 환경에서 Java를 강화합니다.
프로그래머는 람다 식이 함수형 프로그래밍의 개념으로 Java의 객체 지향 특성을 오염시킬까 봐 두려워합니다. 사실, 이것들은 몇 년 전에 C # 언어에 영향을 미쳤던 것과 동일한 비판이지만 이전보다 나아졌습니다.
LINQ는 Visual Studio 2008에도 도입된 기능 집합으로, 쿼리를 만드는 기능을 추가할 수 있습니다. LINQ는 SQL 데이터베이스, XML 문서, ADO.Net 데이터 세트 및 .Net 컬렉션, 파일, 문자열 등을 쿼리하는 데 유용합니다.
LINQ 및 람다 식은 C# 커뮤니티에서 널리 사용되고 있습니다. 따라서 Java.
하나의 메소드만 정의하는 인터페이스를 Java 8에서는 기능적 인터페이스라고 합니다. 람다 표현식은 함수형 인터페이스 및 내부 클래스와 함께 사용되는 경우가 많습니다.
다음 세 가지 람다 표현식을 살펴보겠습니다.
프로그래밍 언어에 대한 비판 중 하나는 특정 처리를 수행하기 위해 작성된 명령어의 수이며 때로는 많은 코드를 작성해야 합니다. 람다 표현식은 몇 가지 경우에 대해 이 문제를 해결했으며 C#이 수년 동안 그랬던 것처럼 Java를 더 강력하고 쉽게 만듭니다.
Lambda 표현식은 Java SE 8의 새로운 기능이며 이 릴리스에 추가된 가장 주목할만한 기능입니다. 람다 식은 이러한 식을 사용하는 메서드와 인터페이스를 나타내는 보다 명확한 방법을 제공합니다. 또한 람다 표현식은 목록을 탐색하고 필터링하고 컬렉션에서 데이터를 추출하는 것을 더 쉽게 만들어 Java 객체 컬렉션을 개선합니다. 성능 기능은 모든 새로운 최신 컴퓨터에서 사용할 수 있는 멀티태스킹 환경에서 Java를 강화합니다.
프로그래머는 람다 식이 함수형 프로그래밍의 개념으로 Java의 객체 지향 특성을 오염시킬까 봐 두려워합니다. 사실, 이것들은 몇 년 전에 C # 언어에 영향을 미쳤던 것과 동일한 비판이지만 이전보다 나아졌습니다.
Lambda 및 LINQ 식과 VisualBasic.Net
Lambda 식은 주로 LINQ(통합 언어 쿼리)를 지원하기 위해 C# 및 VB.Net 에 추가되었습니다. 람다 표현식은 트리와 유사한 표현식을 만드는 데 사용할 수 있는 익명 함수입니다. C#에서는 입력 매개 변수를 지정하여 람다 식을 만들 수 있습니다. 측면 람다 연산자 =>의 왼쪽에 있는 식이나 명령 블록을 다른 쪽에 놓습니다. 예를 들어, 표현식 x=> x*x는 x라는 매개 변수를 지정하고 x의 제곱을 반환합니다. VB.Net 에서. 이 경우 익명 함수를 사용하여 람다를 만듭니다.LINQ는 Visual Studio 2008에도 도입된 기능 집합으로, 쿼리를 만드는 기능을 추가할 수 있습니다. LINQ는 SQL 데이터베이스, XML 문서, ADO.Net 데이터 세트 및 .Net 컬렉션, 파일, 문자열 등을 쿼리하는 데 유용합니다.
LINQ 및 람다 식은 C# 커뮤니티에서 널리 사용되고 있습니다. 따라서 Java.
Java의 익명 내부 클래스
Java의 익명 내부 클래스는 람다 표현식을 향한 첫 번째 단계였습니다. 다음 예제와 같이 내부 클래스를 호출하여 사용할 수 있습니다.JButton button = new JButton("test");내부 클래스 ActionListener 단추에 추가된 것은 actionPerformed()을 사용할 수 있습니다. 이렇게 하면 약간의 코드가 절약되지만 너무 많이 절약되지는 않습니다.
button.addActionListener(new ActionListener(){
@Override public void actionPerformed(ActionEvent e){
System.out.println("원 클릭");
}
});
하나의 메소드만 정의하는 인터페이스를 Java 8에서는 기능적 인터페이스라고 합니다. 람다 표현식은 함수형 인터페이스 및 내부 클래스와 함께 사용되는 경우가 많습니다.
Java의 람다 표현식 구문
Java의 람다 연산자는 -> 입니다. C #과 마찬가지로 Java 8은 다음 예제와 같이 인수를 첨부합니다.(int x) -> x * x변수 x을 정수 유형으로 지정하고 이 변수의 제곱을 반환하려고 합니다 x.
다음 세 가지 람다 표현식을 살펴보겠습니다.
(int x, int y) -> x + y이제 ActionListener 이전 람다:
() -> 36
(문자열 s) -> { System.out.println (들); }
JButton button = new JButton("test");이 코드는 더 작고 읽기 쉽습니다. 또한 내부 클래스 ActionListener이 인수가 되었습니다 e.
testButton.addActionListener(e -> System.out.println ( "원 클릭"));
java.util.function
java.util.function 은 Java 8에 추가되었으며 5 가지 유형의 기능 인터페이스를 포함합니다 .- Predicate: 매개 변수로 전달된 객체의 속성입니다.
- Consumer: 전달된 객체를 인수로 사용하여 트리거해야 하는 액션입니다.
- Function: 단일 결과 렌더링 Y: X-> Y
- Provider: X
- 단항 연산자: of X->의 인스턴스를 포함합니다. x
- (X, X)->의 이항 연산자 x
Lambda 표현식의 >Object 컬렉션은 Java에서 컬렉션 사용을 향상시킬 수 있습니다. 다른 버전에서는 람다 표현식과 매우 잘 결합되는 기능이 컬렉션에 추가되었습니다(예: forEach 두 인터페이스에 설정 Iterator 및 Iterable.
예:List 학생 목록을 포함하며 이 클래스는 학생의 나이를 속성으로 가지고 있습니다.
List 및 = Student.createShortList();
이제 List.
Predicate list = 및 -> et.getAge() >= 20;
마지막으로, 우리는 우리의 선택으로 뭔가를 할 수 있습니다:
aClass.doqlqthing(pl, list);
이것은 이전 버전의 Java보다 훨씬 빠릅니다. 더 복잡한 프로세스를 수행하려면 forEach():
et.forEach( e -> e.getName() );
결론적으로 Java 언어에 추가된 기능은 어떤 식으로든 객체 지향 개념을 약화시키지 않습니다. 이러한 기능은 언어를 강하고 풍부하며 우아하게 만듭니다.
참조:
List및 = Student.createShortList();
Predicate마지막으로, 우리는 우리의 선택으로 뭔가를 할 수 있습니다:list = 및 -> et.getAge() >= 20;
aClass.doqlqthing(pl, list);이것은 이전 버전의 Java보다 훨씬 빠릅니다. 더 복잡한 프로세스를 수행하려면 forEach():
et.forEach( e -> e.getName() );결론적으로 Java 언어에 추가된 기능은 어떤 식으로든 객체 지향 개념을 약화시키지 않습니다. 이러한 기능은 언어를 강하고 풍부하며 우아하게 만듭니다.