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
- Vue 배우기
- 애드센스 수익
- python
- Python 기본편
- gradle
- Spring Batch 강의
- Vue 강의
- docker
- JDK1.3
- Spring
- IntelliJ
- apache log4j
- 구글 애드센스 수익
- Vue
- 미국 배당주
- docker 명령어
- spring Annotation
- intelliJ plugin
- spring boot 시작
- Spring Batch
- 티스토리 광고 수익
- MYSQL
- python 기초
- 젠킨스
- scrapy
- 도커
- Vue 알아보기
- AES256
- docker mysql
- 미국주식
Archives
나만의공간
Java Stream 소개 #1 본문
Stream은 Java 8에서 신규로 추가된 메이져 기능 중 하나로 java.util.stream 클래스에 포함되어 있는 기능입니다.
Stream은 다양한 요소에서 생성이 될수 있는데 stream() 과 of() 메서드를 사용하여 컬렉션 또는 배열을 생성하게 됩니다.
Stream 기본 형태
import java.util.Arrays;
import java.util.stream.Stream;
public class StreamSample {
public static void main(String[] args) {
streamSample1();
}
public static void streamSample1() {
// 배열 Stream 객체 변환
String[] array = new String[]{"a","b","c"};
Stream<String> stream = Arrays.stream(array);
System.out.println("배열 Stream 객체 변환값 출력");
stream.forEach(System.out::println);
System.out.println();
// Stream 객체 생성
stream = Stream.of("a","b","c");
System.out.println("Stream 객체 출력");
stream.forEach(System.out::println);
}
}
출력결과
배열 Stream 객체 변환값 출력
a
b
c
Stream 객체 출력
a
b
c
- Stream 메서드는 Collection 객체를 Interface하기 때문에 아래와 같이 List객체를 Stream객체로 변환해서 담을수도 있습니다.
- addValueToList 메서드는 List객체에 초기값을 적재하기 위해 만든 메서드 입니다.
package jpabook.jpashop.stream;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class StreamSample2 {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
addValuesToList(list1, "가", "나", "다", "라", "마", "바", "사", "아", "자", "차");
Stream<String> stream2 = list1.stream();
System.out.println("List객체를 Stream객체로 이동시킨 후 출력");
stream2.forEach(System.out::println);
}
public static void addValuesToList(List<String> list, String... values) {
for (String value : values) {
list.add(value);
}
}
}
Stream 멀티 쓰레딩 기능
Stream API는 간단한 멀티 쓰레딩 기능을 제공합니다. parallelStream() 메서드를 사용하면됩니다.
아래 코드는 doWork()이란 메서드를 Parallel로 실행하게 됩니다.
package jpabook.jpashop.stream;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class StreamSample3 {
public static void main(String[] args) {
//rangeClose 범위 정수 스트림을 생성 메소드
Stream<Integer> intStream = generateStream(1,5);
System.out.println("Parallel Stream 출력");
intStream.parallel().forEach(element -> doWork(element));
Stream<Integer> intStream2 = generateStream(1,5);
System.out.println("일반적인 Stream 출력");
intStream2.forEach(element -> doWork(element));
}
public static Stream<Integer> generateStream(int startNum, int endNum) {
return IntStream.rangeClosed(startNum, endNum).boxed();
}
public static void doWork(Integer num) {
System.out.println(num);
}
}
출력값
출력된 값을 보면 순차 출력이 안되고 parallel로 인하여 무작위로 출력이 되고 있다.
Parallel Stream 출력
3
4
1
2
5
일반적인 Stream 출력
1
2
3
4
5
Collectting (수집)
- Stream의 collect() 메서드는 collection이나 Map으로 변환하고 Stream을 단일 문자열 형식으로 표현하는데 매우 편한 기능을 제공합니다.
- 아래 코드는 Stream<String> 객체를 List<String> 객체로 변환하는 것을 보여 줍니다.
package jpabook.jpashop.stream;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamCollection {
public static void main(String[] args) {
// GDP가 높은 순으로 나라 이름을 한글로 번역하여 Stream 객체 생성
Stream<String> countryNames = Stream.of(
"United States", "China", "Japan", "Germany", "India",
"United Kingdom", "France", "Brazil", "Italy", "Canada",
"Russia", "South Korea", "Spain", "Australia", "Mexico",
"Indonesia", "Netherlands", "Saudi Arabia", "Turkey", "Switzerland"
);
// stream객체에 있는 나라 이름을 모두 대문자로 변경하여 List객체로 변환
List<String> countryList = countryNames.map(element -> element.toUpperCase()).collect(Collectors.toList());
countryList.forEach(element-> System.out.print(element+" "));
}
}
결과
UNITED STATES CHINA JAPAN GERMANY INDIA UNITED KINGDOM FRANCE BRAZIL ITALY CANADA RUSSIA SOUTH KOREA SPAIN AUSTRALIA MEXICO INDONESIA NETHERLANDS SAUDI ARABIA TURKEY SWITZERLAND
'IT > JAVA' 카테고리의 다른 글
Java Stream 다양한 생성방법 (0) | 2024.03.08 |
---|---|
Java Stream Operation 기능 #1 (0) | 2024.03.06 |
WebClient 사용법 (ConnectionProvider 사용법) (0) | 2024.02.26 |
CheckedException 과 unCheckedException 설명 (0) | 2024.02.22 |
Intellij CheckStyle 적용하기 (0) | 2023.03.17 |
Comments