JAVA [람다식]

곽지욱·2024년 1월 15일
0

Java

목록 보기
3/4
post-thumbnail

람다식이란? 간단하게 설명하면 메서드를 "하나의 식"으로 표현한 것이다.

하나의 식으로 표현하여 기존의 방식보다 훨씬 간략하게 표현이 가능하고, 메서드의 이름과 반환값이 존재하지 않는 "익명함수"이다

람다식의 특징

  • 람다식 내에서 사용되는 지역변수는 final이 붙지 않아도 상수로 간주함.
  • 람다식으로 선언된 변수명은 다른 변수명과 중복될 수 없음

람다식의 장점

  1. 코드를 간결하게 만들 수 있음.
  2. 가독성 상승
  3. 함수를 만드는 과정없이 한번에 처리할 수 있어 생산성이 높아짐
  4. 병렬프로그래밍이 용이함.

람다식의 단점

  1. 람다를 사용하면서 만든 무명함수는 재사용이 안됨.
  2. 디버깅이 어려움.
  3. 람다를 남발하면 코드가 지저분해질 수 있음.
  4. 재귀로 만들경우 부적합

int [] arr = new int [5];

Arrays.setAll(arr,(i) -> (int) (Math.random() * 5 + 1);

// (i) - (int) (Math.random() * 5 + 1 람다식을 메서드로 표현하면?

int method() {

return (int) (Math.random() *  5) + 1;

}

위 코드에서는 int 배열 arr 에 setALl의 두 번째 인자로 채우는 코드를 가지고있다.

이렇게 람다식은 람다식 자체만으로도 메서드의 역할을 대신할 수 있고, 메서드의 매개변수로 전달되어 지는 것도 가능하다.

() -> { ... };

() = 파라미터
-> = 화살표
{ ... } = 실행문

어떠한 특정코드를 람다 표현식으로 만들었을 때, 그 표현식은 변수에 담길 수도 있고 파라미터로 보낼 수도 있음

어쨋든 특정 변수에 담길 수 있어야 함.


List<String> list = new ArrayList<>();

list.add("자바");
list.add("C");
list.add("리액트");

for(String str : list){
	System.out.println(str);
   }

	System.out.println();
    
list.stream().forEach( (String str) -> {System.out.println(str)}); 

//forEach 메서드가 lsit가 갖고있는 데이터를 순회한다.
//람다 표현식.


자바
C
리액트

자바
C
리액트

list.stream().forEach( (str,str2) -> System.out.println(str)); 
//코드가 한줄로 작성이 되면 중괄호는 생략가능함
//String 도 생략가능함. 파라미터의 타입이 예측가능한 형태이면 따로 타입을 지정해주지 않아도 됨.
//파라미터가 하나가 아닐 경우 소괄호를 적어줌



0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN