JAVA 8 (1) 변경사항 , Lambda, StringJoiner

신복호·2020년 8월 30일
0

java

목록 보기
1/3
post-thumbnail

JAVA8에서의 변경사항

2014년에 발표된 JAVA 최신버전인 JAVA SE 8 버전에서 많은 사향이 변경되거나 새롭게 추가되었습니다. JAVA SE 8에서 변경되거나 새롭게 추가된 사항들 중에 주목할 부분은 다음과 같스빈다.

  • 람다 표현식 및 가상 확장 메소드
  • 날짜 및 시간 API 추가
  • Stream / Optional의 등장
  • 병렬 배열의 정렬
  • StringJoiner의 등장

lambda(추가예정)

lambda란 무엇인가?

람다식, 또는 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어이다.

출처 : https://namu.wiki/w/%EB%9E%8C%EB%8B%A4%EC%8B%9D

간단히 말하면 익명 함수를 사용하여 보다 단순하게 표현하는 방법이라고 보시면 됩니다.

해당 부분을 이해하기 위해선 우선 함수형 프로그래밍을 알아야한다.

함수형 프로그래밍(functional programming)은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다. 명령형 프로그래밍에서는 상태를 바꾸는 것을 강조하는 것과는 달리, 함수형 프로그래밍은 함수의 응용을 강조한다.

출처 : https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98%ED%98%95_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

함수형 프로그래밍에 대해선 별도의 게시글을 통해 게시하도록 하겠습니다.

lambda의 장단점

장점

  • 코드의 간결성 - 불필요한 반복문의 삭제가 가능하며 복잡한 식을 단순하게 표현할 수 있다.
  • 병렬처리 가능 - 멀티쓰레드를 활용하여 병렬처리를 사용할수 있다.
  • 의도의 명확성 - 코드에서 드러내고자 하는 개발자의 의도를 응축적이면서 추상화 시킬수 있어서 개발자의 의도를 명확하게 나타낼수 있습니다.

단점

  • 많이 사용하게 되면 오히려 가독성을 떨어트립니다.
  • 디버깅이 다소 까다로울수 있습니다.
  • 재귀 람다식의 호출이 까다롭다.

lambda Expressions

기본 형태

 (자료형 매개변수) -> { 실행코드; }

  a. 매개변수 : 메소드 매개변수

  b. "->" : 에로우, 코드블럭을 실행(호출)

  c. "{ }" : 메소드 구현부

참조 : https://sas-study.tistory.com/105

다음 List에 담겨저 있는 것을 sysout을 이용해서 호출을 하는 것을 예제로 하겠습니다.

import java.util.Arrays;
import java.util.List;

public class test {
    
    // 람다식 x
    public static void main(String[] args) {
        List<String> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
        for(Integer number : list){
            System.out.println( number);
        }  
    }
    //람다식 o
    public static void main(String[] args) {
        List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
        list.forEach(n -> System.out.println(n));
      
    }
}

둘은 동일하게 결과가 나오지만 소스는 더 간결해졌다.

StringJoiner?

정의

  • StringJoiner : 구분 기호, 접두사 및 접미사를 사용하여 문자열을 결합할때 사용
  • 예시

        StringJoiner joiner = new StringJoiner(",");
        joiner.add("빨강")
                .add("주황")
                .add("노랑")
                .add("초록");

        System.out.println(joiner);

profile
한참 열정이 가득한 백엔드 개발자입니다.

0개의 댓글