전체 글
-
람다와 스트림 - collect() part 2백엔드/자바 2023. 4. 19. 09:08
람다와 스트림 - collect() part1 collect()란? collect()란 스트림의 최종 연산 중 하나의 과정이다. 사실 다른 최종 연산과 같이 다뤄야하나 비중이 크다보니 별도로 다룰 것이다. collect()는 간단히 말하면 다양한 콜렉션 자료들을 쉽 sgcomputer.tistory.com 지난 번에 이어서 이번에는 collect()의 여러 기능 중 하나인 분할에 대해서 공부해보자. collect()는 스트림으로 만들어진 데이터를 쉽게 다루기 위한 메서드라고 이전 파트에서 배웠다. 하지만 이전 파트에서는 단일 스트림을 다루는 방법에 대해서만 배웠다. 이번에는 collect()를 이용해 스트림을 분할하여 나눈 데이터를 다루는 방법을 배울 것이다. partitioningBy()와 groupi..
-
람다와 스트림 - collect() part1백엔드/자바 2023. 4. 17. 06:45
collect()란? collect()란 스트림의 최종 연산 중 하나의 과정이다. 사실 다른 최종 연산과 같이 다뤄야하나 비중이 크다보니 별도로 다룰 것이다. collect()는 간단히 말하면 다양한 콜렉션 자료들을 쉽게 가공할 수 있게 도와주는 메서드다. collect()와 collectors collect()는 이전에 배운 reduce()가 가진 기능 뿐 아니라 더욱 다양한 기능을 가진다. 그런데 앞서 reduce()에선 직접 연산 과정을 다 적어줬다. 하지만 collect()의 경우 더욱 복잡하고 다양한 자료 가공을 하다보니 직접 적는건 힘들다. 그렇다보니 collect()를 편하게 사용하기 위해 필요한 것이 바로 collectors 클래스다. static 클래스인 collectors는 다양한 컬렉..
-
람다와 스트림 - 최종 연산백엔드/자바 2023. 4. 17. 05:40
스트림의 최종 연산이란? 람다와 스트림 - 스트림의 정의와 특징 스트림의 정의와 그 필요성 한마디로 말하면 컬렉션이나 배열을 다루기 쉽게 만든 것이다. 기존의 컬렉션 프레임웍을 보면 위와 같이 List, Set, Map의 인터페이스로 구성된 것을 알 수 있다. 이 중 sgcomputer.tistory.com 이전 파트에서 배웠듯이 스트림은 일반적인 객체와 달리 한번 사용하고 나면 재활용이 불가능하다고 배웠다. 그때 이 사용의 기준이 되는 것이 바로 최종 연산이다. 이전에 써먹었던 그림을 다시 가져오면 위와 스트림은 위와 같은 과정으로 사용하게 된다. 컬렉션 데이터에 대한 스트림 요소를 생성한 뒤 중간 연산을 통해 데이터를 가공한다. 그 뒤에 최종 연산 과정에서 스트림 요소를 소모하면서 스트림의 사용이 끝..
-
람다와 스트림 - Optional<T>백엔드/자바 2023. 4. 17. 00:38
그림 1과 같은 코드가 있다고 가정해보자. 만약 저 상태로 실행한다면 그림 2와 같은 결과를 확인할 수 있다. 변수 nul은 null을 가지고 있기 때문이다. 그렇다면 이 코드에서 NullPointException이 발생하지 않도록 해보자. 아주 간단하게 나타나면 위와 같은 코드로 나타낼 수 있을 것이다. 물론 이건 한줄짜리 코드라 간단해보이지만 코드가 길어진다면 null체크 코드만으로도 복잡해보일 것이다. 만약 이걸 더 깔끔하게 나타내려면 어떻게 해야할까? 바로 Optional 클래스를 사용해주면 된다. Optional는 지네릭 클래스로서 모든 타입의 참조 변수를 감싸는 래퍼 클래스다. 위의 코드에서 확인해보면 알겠지만 Optional 타입의 변수가 String타입의 변수를 저장한 것을 볼 수 있다. ..
-
람다와 스트림 - 중간 연산 part 2백엔드/자바 2023. 2. 13. 05:47
람다와 스트림 - 중간 연산 part 1 람다와 스트림 - 스트림의 정의와 특징 스트림의 정의와 그 필요성 한마디로 말하면 컬렉션이나 배열을 다루기 쉽게 만든 것이다. 기존의 컬렉션 프레임웍을 보면 위와 같이 List, Set, Map의 인터 sgcomputer.tistory.com 이전 글에서 우리는 스트림의 중간 연산에 대해 공부해봤다. 간단히 복습해보자면 스트림 중간 연산은 컬렉션 데이터를 쉽게 재가공하기 위해 존재한다. 그렇기에 연산 반복이 가능하고 반환 데이터의 타입이 Stream이다. 오늘은 지난 번에 이어 남은 중간 연산들에 대해 공부해보고자 한다. 중간 연산 - Map(): 스트림의 요소 변경 이전에 공부한 중간 연산 메서드 sorted(), skip() 등은 컬렉션의 데이터들을 거르거나 ..
-
람다와 스트림 - 중간 연산 part 1백엔드/자바 2023. 2. 11. 07:08
람다와 스트림 - 스트림의 정의와 특징 스트림의 정의와 그 필요성 한마디로 말하면 컬렉션이나 배열을 다루기 쉽게 만든 것이다. 기존의 컬렉션 프레임웍을 보면 위와 같이 List, Set, Map의 인터페이스로 구성된 것을 알 수 있다. 이 중 sgcomputer.tistory.com 지난 번 람다와 스트림의 정의와 특징을 설명하면서 다음과 같은 그림을 보여준 적이 있다. 간단히 이야기하자면 컬렉션의 스트림 생성 및 연산에 관한 그림이었다. 오늘은 이중에서 중간 연산에 대해서 설명하고자 한다. 중간연산이란? 중간 연산은 컬렉션을 스트림화 한 후 사용자의 필요에 따라 스트림의 데이터들을 재가공하는 과정을 말한다. 중간 연산을 통해서 데이터를 자르거나 조건에 따라 거르거나 정렬하는 등의 다양한 작업을 할 수 ..
-
람다와 스트림 - 스트림 만들기백엔드/자바 2021. 11. 9. 21:49
2021.09.15 - [백엔드/자바] - 람다와 스트림 - 스트림의 정의와 특징 람다와 스트림 - 스트림의 정의와 특징 스트림의 정의와 그 필요성 한마디로 말하면 컬렉션이나 배열을 다루기 쉽게 만든 것이다. 기존의 컬렉션 프레임웍을 보면 위와 같이 List, Set, Map의 인터페이스로 구성된 것을 알 수 있다. 이 중 sgcomputer.tistory.com 이전 파트에서는 스트림의 정의와 특징에 대해서 알아봤다. 간단히 복습해보자면 스트림이란 컬렉션의 데이터를 쉽게 다루기 위해 만들어진 인터페이스다. List든 Set이든 Map이든 형태에 구애받지 않고 데이터만 뽑아서 스트림 속에 넣고 가공할 수있다. 그렇다보니 스트림은 원본 데이터에 영향을 주지 않고 데이터만 손쉽게 뽑아 가공이 가능하다. 물론..
-
람다와 스트림 - 스트림의 정의와 특징백엔드/자바 2021. 9. 15. 00:24
스트림의 정의와 그 필요성 한마디로 말하면 컬렉션이나 배열을 다루기 쉽게 만든 것이다. 기존의 컬렉션 프레임웍을 보면 위와 같이 List, Set, Map의 인터페이스로 구성된 것을 알 수 있다. 이 중에서 List와 Set은 사용법이 비슷하지만, Map은 그 성격이 다르다. 이는 즉 컬렉션을 다룰 때 List, Set과 달리 Map을 다루기 위한 방법 또한 다르단 것을 의미한다. 스트림은 이러한 불편함을 해소하고자 만들어졌다. 스트림은 데이터 소스를 추상화하고, 데이터를 다루는데 필요한 메서드들을 정의한 인터페이스다. 예시를 한번 보도록 하자. 예를 들어 위와 같이 1부터 5까지 숫자를 가진 배열과 리스트가 있다고 가정해보자. 이제 이 배열과 리스트 중에서 짝수만 출력하려면 어떻게 해야할까? 일반적으로..