728x90
반응형
[Java] Stream - 자바 스트림 개념 및 사용법
💡 자바 스트림 (Stream )
자바의 스트림(Stream)은 Java 8에 추가된 기능이다. 컬렉션에 저장되어 있는 요소들을 하나씩 참조하여 람다식으로 처리할 수 있도록 해주는 코드패턴(반복자)이다.
스트림은 람다식과 함께 사용되기때문에 데이터에 대한 처리를 매우 간결하게 작성할 수 있다는 장점과 내부 반복자라는 것을 사용하기 때문에 병렬처리가 쉽다는 장점이 있다.
💡 Iterator
이전까지는 컬렉션의 엘리먼트들을 순회하기 위한 Iterator 객체를 활용하였다.
/* Iterator 활용 */
ArrayList<String> arrList = new ArrayList<String>(Arrays.asList("a","b","c","d","f"));
Iterator<String> iter = arrList.iterator();
while(iter.hasNext()) {
String str = iter.next();
System.out.println("iter 값 : "+str);
}
💡 스트림(Stream) 사용법
📌 스트림 생성
/* 스트림(Stream) 생성 - 컬렉션(List) */
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d","f"));
Stream stream = list.stream();
/* 스트림(Stream) 생성 - 배열 */
String[] array = new String[]{"a","b","c","d","f"};
Stream<String> stream1 = Arrays.stream(array);
/* 스트림(Stream) 생성 - 기본 타입 */
IntStream intStream = IntStream.range(1,11); // 1 - 10
LongStream longStream = LongStream.range(1,100); // 1 - 999
💡 Filter
📌 스트림 활용(Filter) I
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a","b","c","d","f"));
list.stream()
.filter("f"::equals)
.forEach(System.out::println);
// 결과
// f
filter() 메서드를 활용해 "f"만 뽑아낸다.
📌 스트림 활용(Filter) II
Stream<Integer> stream = IntStream.range(1,11).boxed();
stream.filter(v -> ((v % 2) == 0))
.forEach(System.out::println);
// 결과
// 2, 4, 6, 8, 10
1~10 의 숫자 중 filter를 이용해 짝수만 뽑아낸다.
💡 Map
📌 스트림 활용(Map) I
map() 메소드는 값을 변환해주는 람다식을 인자로 받아, 람다식을 적용해 새로운 데이터를 만들기 위해 사용된다.
Stream<Integer> stream = IntStream.range(1,10).boxed();
stream.filter(v -> ((v % 2) == 0))
.map(v -> v * 10)
.forEach(System.out::println);
// 결과
// 20, 40, 60, 80
1~9 의 숫자 중 filter를 이용해 짝수만 뽑아내 map()을 통해 곱하기 10을 해서 10배에 해당하는 숫자를 생성한다.
728x90
반응형
'Programming > Java' 카테고리의 다른 글
[Java] Map이란? (개념, 활용, 예제 등) (0) | 2022.10.02 |
---|---|
[Java] List 중복제거 - Set, Stream 활용 (0) | 2022.09.10 |
[Java] BigDecimal 사용법 및 예제 - 연산, 형변환, 비교 (0) | 2022.06.12 |
[Java] StringBuilder는 무엇인가? - 사용법 및 사용하는 이유 (0) | 2022.01.09 |
[Java] if/else문, switch/case문의 성능 차이에 대해 (1) | 2022.01.02 |