일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- cloud
- tomcat
- map
- Pipeline
- Collection
- mybatis
- LAN어댑터
- docker
- gradle
- Linux
- JPA
- container
- 방화벽
- Java
- ansible
- 라우터
- sonarQube
- post
- 캐시서버
- IntelliJ
- STREAM
- Set
- AOP
- Spring
- Jenkins
- 액세스회선
- 허브
- DevOps
- jdk
- 소켓
- Today
- Total
목록STREAM (7)
거북이-https://velog.io/@violet_evgadn 이전완료
들어가기 앞서 Redirection과 Pipe는 Linux 명령어를 더욱 강력하고 편리하게 해주는 핵심 역할을 하는 기능이다. 이 2가지를 제대로 활용하지 못한다면 Linux 자체를 잘 활용하기가 어려워진다. 이번 Section은 계속해서 활용할 기술이기 때문에 잘 알아둬야 한다. Pipe ◎ Linux Pipe란? Linux를 활용하다 보면 이전 명령어의 결과를 다음 명령어의 입력값으로 활용하는 방식으로 여러 개의 명령을 동시에 사용하고 싶을 때가 있다. 예를 들어 현재 디렉터리에 있는 모든 파일명 중 "sample"이라는 문자열을 포함하는 파일명만 찾고 싶은 경우가 있을 것이다. 파이프란 이를 가능하게 해주는 도구로써 이전 명령어의 결과물을 다음 명령(주로 필터링)에서 사용할 수 있게 도와준다. ◎ ..
코딩 테스트 시 필요한 이유 모든 코딩 테스트를 보면 왜인지는 모르겠지만 답을 배열(int[], String[] 등)로 반환하라고 하는 경우가 많다. 하지만 개인적으로는 선언 시 미리 Size를 정해줘야 하는 배열보다는 Size 걱정 없이 데이터를 저장할 수 있는 Collection을 더 많이 활용하게 된다. 물론 Collection을 for문이나 for each문을 통해 모든 데이터를 순회하며 배열에 값을 넣어줘도 될 것이다. (실제로 필자는 예전에 이런 방식으로 배열을 만들었다) 하지만 Stream을 사용한다면 데이터 순회에 걸리는 실행 시간을 조금이라도 줄일 수 있지 않을까 생각하여 정리해 보았다. Collection to Array ◎ int가 아닌 Data Type → int String s :..
최종 처리 메서드 종류 수집 최종 처리 메서드의 꽃이라고 할 수 있다. 지금까지 Stream으로 처리한 데이터들은 최종 처리 메서드를 통해 결과 출력만 수행하였다. 하지만 현실에서 코드를 사용할 때는 출력문으로 결과를 출력하는 상황보다는 데이터들을 Collection이나 Array에 담아 사용자에게 반환하는 경우가 대부분이다. 따라서 Stream에서도 중간 메서드들을 통해 처리된 데이터들을 Collection이나 배열, 혹은 원하는 Container로 담아주는 메서드가 필요하고 이것이 "수집 최종 처리 메서드"이다. 대표적인 수집 메서드는 "collect()"이며 collect에 전달하는 Parameter를 다르게 하여 어떤 Container에 Stream 데이터를 수집할지 결정할 수 있다. Collec..
최종 처리 메서드 종류 루핑 ◎ forEach 중간 처리 메서드 Section에서 peek()을 설명하며 비교군으로 많이 활용했던 구문이다. forEach()의 리턴 타입이 void인 만큼 forEach는 Stream의 데이터를 변경하는 등의 특수한 역할을 수행할 수는 없다. forEach() 구문은 주로 Stream에 저장된 모든 요소를 출력하는 용도로 활용된다. peek()을 배우며 많이 활용해봤으니 예시 코드는 생략하겠다. 매칭 매칭은 최종 처리 단계에서 Stream에 담긴 값들이 특정 조건을 만족하는지 조사하는 메서드이다. 중간 단계 메서드 중 filter()와 비슷하다고 생각할 수 있지만 조금 다른 성격을 띤다. filter()는 중간 단계에서 로직을 수행하며 "모든 데이터 중 원하는 데이터만 ..
중간 처리 메서드 종류 왜인지는 모르겠는데 티스토리에서 표를 작성하면 깨지는 경우가 있어서 Excel로 표를 만들어 스크린샷을 찍었다. (생각보다 티스토리가 순정으로 활용하기엔 안 좋은 것 같은...) 필터링 필터링은 "Filter"라는 말에서 알 수 있듯 Stream에 저장된 수많은 데이터 중 원하는 데이터만 걸러내는 역할을 수행한다. ◎ distinct() 중복을 제거하는 메서드이다. Stream은 Object.equals(Object B)가 true를 반환할 때 Object와 Object B를 동일한 객체로 판단하는데 Set에서 짧게 설명했듯 자바에서는 equals() 메서드를 수행하기 전 두 Object의 Hashcode 값 일치 여부를 먼저 검사하기 때문에 hashCode() 값 또한 일치해야 ..
Stream 종류 Stream Interface는 BaseStream이라는 Interface를 상속받아 Stream 역할을 수행한다. BaseStream Interface를 상속받는 Interface는 Stream 뿐만 아니라 IntStream, LongStream, DoubleStream이 존재한다. IntStream은 int 데이터만 들어갈 수 있으며, LongStream은 long 데이터, DoubleStream에는 double 데이터만 들어갈 수 있다. 객체 Stream를 선언할 때 T에는 오직 Class 자료형만 들어갈 수 있으므로 T에 int, long, double이 들어갈 수가 없다. 따라서 T에 int, long, double이 들어가야 하는 상황을 대처하기 위하여 IntStream, L..
Java 8에 추가된 내용 & Java Stream이 강조되는 이유 Java LTS 버전 중 하나인 Java8에 추가된 대표적인 내용은 아래와 같다. Lambda(람다) : 마치 함수처럼 코드를 작성하는 함수형 프로그래밍 언어에서 사용되는 개념으로 메서드에 이름이 없어 익명 함수라고도 부름 Optional : Null이 될 수 있는 객체를 담는 클래스 메소드 레퍼런스 : Lambda의 축약 표현. 아래와 같이 사용 가능 클래스 이름::메소드 이름 (예시) list.forEach(System.out::println) 생성자::new (예시) list.stream().map(Integer::new) Stream : Collection이나 배열에 저장된 요소를 람다식(Lambda Expression)이나 메소..