Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- gradle
- 구글 애드센스 수익
- python 기초
- docker mysql
- MYSQL
- JDK1.3
- apache log4j
- docker 명령어
- 미국 배당주
- scrapy
- spring Annotation
- Spring Batch
- IntelliJ
- 애드센스 수익
- Spring
- Spring Batch 강의
- Vue 배우기
- Python 기본편
- 도커
- spring boot 시작
- docker
- 젠킨스
- Vue 강의
- 미국주식
- python
- intelliJ plugin
- AES256
- Vue
- Vue 알아보기
- 티스토리 광고 수익
Archives
나만의공간
Java Stream Operation 기능 #1 본문
자바 Stream에 기본사용법에 대한 설명을 진행하였고, 이제는 Stream에서 제공하는 기본적인 Operations 종류들에 대해서 알아보고자 합니다.
Stream에는 유용한 기능들이 많이 제공됩니다.
count() & distinct()
- count(): Stream 객체의 요소 개수를 반환합니다.
- distinct(): Stream 객체의 중복을 제거한 새로운 Stream을 반환 합니다. 중복이 제거한 후에 반환된 Stream은 새로운 객체가 됩니다.
package jpabook.jpashop.stream;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamCount {
public static void main(String[] args) {
Stream<String> stream = Stream.of("가","나","다","라","마","바");
long streamCnt = stream.count();
System.out.println("=========================");
System.out.println("Stream 객체 Cnt: " + streamCnt);
System.out.println("=========================");
List<String> list = new ArrayList<>();
arrayListSetting(list,"가","나","다","라","마","바");
long listStreamCnt = list.stream().count();
System.out.println("=========================");
System.out.println("list 객체 Cnt: " + listStreamCnt);
System.out.println("=========================");
List<String> list2 = new ArrayList<>();
arrayListSetting(list2,"가","나","다","라","마","바","가","나","다","라","마","바");
System.out.println("========중복 제거건 Stream =======");
list2.forEach(System.out::print);
Stream distinctList2 = list2.stream().distinct();
System.out.println("");
System.out.println("========중복 제거후 Stream =======");
distinctList2.forEach(System.out::print);
}
public static void arrayListSetting(List list, String... values) {
for (String value:values) {
list.add(value);
}
}
}
결과값
=========================
Stream 객체 Cnt: 6
=========================
=========================
list 객체 Cnt: 6
=========================
========중복 제거건 Stream =======
가나다라마바가나다라마바
========중복 제거후 Stream =======
가나다라마바
Iterating(반복)
- Stream API는 for, for-each, while 반복문을 대체하는 API를 제공합니다. 이러한 기능제공으로 개발자는 로직 개발에 집중할 수 있게 됩니다.
- List에 있는 문자가 존재하는지 찾는 방법을 기존 for-each과 Stream으로 작성이 차이점을 볼수 있습니다.
package jpabook.jpashop.stream;
import java.util.Arrays;
import java.util.List;
public class StreamIterating {
public static void main(String[] args) {
List<String> list = Arrays.asList("사과","배","대추","감","귤","수박");
//기존 foreach문법
boolean forBoolean = forEachMethod(list);
System.out.println("foreach 사용 (대추가 있나여?) "+forBoolean);
//Stream을 활용한 방법
boolean streamBoolean = streamMethod(list);
System.out.println("stream 사용 (대추가 있나여?) "+streamBoolean);
}
//기존 foreach문법
public static boolean forEachMethod(List<String> list) {
for (String str: list) {
if (str.contains("대추")){
return true;
}
}
return false;
}
//Stream으로 변경
public static boolean streamMethod(List<String> list) {
boolean isContain = list.stream().anyMatch(element -> element.contains("대추"));
return isContain;
}
}
결과값
foreach 사용 (대추가 있나여?) true
stream 사용 (대추가 있나여?) true
Filtering (필터기능)
- Filter() 메서드는 컬렉션 또는 배열과 같은 요소들을 처리할때, 특정 조건을 만족하는 요소들만을 분리하는데 사용됩니다.
예를 들어 과일에 이름이 2자 이상인 과일만 가져오려고 할때 filter() 메서드를 사용하면 유용합니다.
package jpabook.jpashop.stream;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamFilter {
public static void main(String[] args) {
List<String> list = Arrays.asList("사과","배","대추","감","귤","수박","단호박","밤");
System.out.println("========= List 원본 ==========");
list.forEach(element -> System.out.print(element+" "));
System.out.println("");
List<String> twoList = list.stream().filter(element -> element.length()>=2).collect(Collectors.toList());
System.out.println("=== 과일이름 두 글자 이상 리스트 ===");
twoList.forEach(System.out::println);
}
}
결과값
========= List 원본 ==========
사과 배 대추 감 귤 수박 단호박 밤
=== 과일이름 두 글자 이상 리스트 ===
사과
대추
수박
단호박
Mapping
- map() 메서드는 Stream내의 각 요소를 특정한 함수에 적용하여 새로운 요소로 변환하는데 사용합니다.
변환된 요소들로 이루어진 새로운 Stream을 반환해 줍니다. - map() 메서드에서 반환되는 종류는 다음과 같습니다.
- 원시 타입 스트림 (Primitive Stream): IntStream, LongStream, DoubleStream 등의 원시 타입 스트림을 반환할 수 있습니다. 예를 들어, IntStream은 정수형 요소를 처리하는 스트림입니다.
- 객체 타입 스트림 (Object Stream): Stream<T> 형태의 객체 타입 스트림을 반환할 수 있습니다. 여기서 T는 제네릭 타입으로, 리스트의 요소 타입에 따라 결정됩니다. 예를 들어, List<Integer>에서 Integer 타입의 스트림을 반환합니다.
package jpabook.jpashop.stream;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class StreamMap {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7);
System.out.println("===== 원래값 =====");
list.stream().forEach(element -> System.out.print(element+" "));
System.out.println(" ");
System.out.println("===== 변경값 =====");
// 기본값에 두배한 리스트를 반환한다.
List<Integer> doubleList = list.stream().map(element -> element * 2).collect(Collectors.toList());
doubleList.stream().forEach(element-> System.out.print(element+" "));
}
}
결과값
===== 원래값 =====
1 2 3 4 5 6 7
===== 변경값 =====
2 4 6 8 10 12 14
'IT > JAVA' 카테고리의 다른 글
Java Stream 다양한 생성방법 (0) | 2024.03.08 |
---|---|
Java Stream 소개 #1 (0) | 2024.02.27 |
WebClient 사용법 (ConnectionProvider 사용법) (0) | 2024.02.26 |
CheckedException 과 unCheckedException 설명 (0) | 2024.02.22 |
Intellij CheckStyle 적용하기 (0) | 2023.03.17 |
Comments