ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] Java 8 에서 추가된 기능 사용해보기
    ■ Back-End/- Java 2019. 7. 2. 15:50

    Java 8이 나온지 한참 지났지만, 실제로 새롭게 추가된 기능을 실무에 활용해본 적은 별로 없어서 이번에 정리해보려고 한다.

    새로운 것들이 항상 좋은 건 아니지만, 그렇다고해서 오래 전부터 사용하던 것만 고집해서는 안된다.

     

    Java 8에서 새롭게 추가된 기능은 아래와 같다.

    • Lambda 표현식
    • Default Method
    • 함수형 인터페이스
    • Stream
    • Optional
    • 날짜 관련 클래스 추가
    • 병렬 배열 정렬
    • String Joiner

    앞으로 직접 사용해보면서 내용을 정리해나가려고 한다.

     


    Lambda 표현식 / 함수형 인터페이스 / Stream 클래스

     

    React를 이용해 ES6로 코드를 작성하면서 Lamda 표현식을 사용한 적이 있었다.

    그런데 Java에서 Lambda 표현식을 사용할 수 있다는게 많이 어색했다.

     

    기존 방식 vs Lambda 표현식으로 작성한 방식

    왜 갑자기 Java에서 Lambda 표현식을 쓰는걸까?

    위 예제에도 나타나있듯이 Lambda를 이용하면 좀 더 간결하고 읽기 쉽게 코드를 작성할 수 있다.

    Java를 더 현대적인 언어로 사용하고자, 함수 언어적 특성을 부여하고자 Lambda 표현식을 사용한다고 한다...

    (사실 난 이게 더 읽기 불편한 것 같다. 하지만 지금은 소스코드가 짧아서 그렇지, 엄청 긴 소스코드였으면 Lambda 표현식이 더 읽기 편할 수도 있을 것 같다.)

     

    Stream 클래스란?

    연속된 정보를 처리하기 위해 사용하는 클래스라고 볼 수 있다.

    순차적으로 데이터를 처리한다.

     

    Stream 클래스의 주요 연산자

    filter()와 forEach() 메서드 사용 예제

    1. filter()

    데이터를 조건으로 거를 때 주로 사용한다.

     

    2. map()

    데이터를 특정 데이터로 변환할 때 사용한다.

     

    3. forEach()

    for 반복문 처럼 각각의 항목에 접근할 때 사용한다.

     

    4. reduce()

    처음 두 요소를 가지고 연산한 결과를 갖고 다음 요소와 연산한다.

     

     

    Stream 클래스와 Collection의 stream() 메서드 비교

    1. Stream 클래스는 저장 공간이 없다.

    Stream은 값을 저장하지 않고, 연산 파이프라인을 거치는 데이터 구조를 통해 값을 전달하기만 한다.

     

    2. Stream 클래스는 함수적 특성을 가진다.

    Stream에 연산을 적용해 결과를 얻어와도 데이터에는 변화가 없다. Stream의 데이터 소스로 Collection을 사용할 수 있다.

     

    3. Stream 클래스는 지연 연산을 추구한다.

    filter, map, sort, 중복 제거 등 대부분의 Stream 연산은 지연 연산으로 구현될 수 있다. 지연 연산을 사용하면 원하는 답을 얻기 위해 필요한 만큼만 Stream에서 원소를 얻어 검사할 수 있다.

     

    4. 한계(limit)를 원하는 대로 조절할 수 있다.

    Collection은 한계를 조작할 수 없지만, Stream에서는 가능하다.

     

     

     

    Stream에 관련된 참고 사이트

    https://www.baeldung.com/java-streams

     

    Java Streams | Baeldung

    The Full Guide to Java Streams.

    www.baeldung.com

     

     

     

     

     


    String Array 또는 List에 구분자 넣기

    (1) String 클래스의 join() 메서드

    String 클래스에 join() 이라는 메서드가 추가되었다.

    먼저 사용 예제는 아래와 같다.

     

    예제 코드

    실행 결과

     

    (2) StringJoiner 클래스 이용하기

    Java 8에서 새롭게 추가된 StringJoiner를 이용해 접두사, 접미사를 추가할 수 있다.

     

    예제 코드

    실행 결과

     

     

     

Designed by Tistory.