-
[Java] 스트림(Stream)프로그래밍/JAVA 2023. 3. 11. 23:07728x90
자바 스트림(Stream)은 컬렉션(Collection)과 Array에 저장되어있는 요소(Element)들을 하나씩 순회하면서 처리할 수 있는 코드패턴으로 람다형(함수형 인터페이스)과 함께 사용되어 코드 양을 줄이고 간결한 표현으로 간단하게 요소를 처리할 수 있다.
스트림 생성 방법
// 리스트 List<String> list = Arrays.asList("a", "b", "c"); list.stream(); // 배열 String[] array = new String[]{"a", "b", "c"}; Arrays.stream(array);
스트림 데이터 가공
1) map()
스트림에서 나오는 데이터를 변경하여 새로운 데이터를 만든다.
List<String> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry")); List<String> list1 = list.stream() .map(s -> s.toUpperCase()) .collect(Collectors.toList()); System.out.println(list1); list.stream() .map(String::toUpperCase) .forEach(s -> System.out.println(s)); // [APPLE, BANANA, MELON, GRAPE, STRAWBERRY] // APPLE // BANANA // MELON // GRAPE // STRAWBERRY
2) filter()
스트림에서 나오는 데이터에서 특정 데이터만 골라낸다.
List<String> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry")); List<String> list1 = list.stream() .filter(t->t.length()>5) .collect(Collectors.toList()); System.out.println(list1); list.stream() .filter(t->t.length()>5) .forEach(s -> System.out.println(s)); // [APPLE, BANANA, MELON, GRAPE, STRAWBERRY] // APPLE // BANANA // MELON // GRAPE // STRAWBERRY
3) sorted()
스트림 데이터들을 정렬해준다.
List<String> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry")); List<String> list1 = list.stream() .sorted() .collect(Collectors.toList()); System.out.println(list1); list.stream() .sorted() .forEach(s -> System.out.println(s)); // [APPLE, BANANA, GRAPE, MELON, STRAWBERRY] // APPLE // BANANA // GRAPE // MELON // STRAWBERRY
스트림 결과 생성
1) collect()
가공된 스트림 데이터의 값을 다른 Collector로 생성한다.
toList() : 스트림 데이터를 List로 저장한다.
List<String> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry")); List<String> list1 = list.stream() .map(s -> s.toUpperCase()) .collect(Collectors.toList()); System.out.println(list1); // [APPLE, BANANA, MELON, GRAPE, STRAWBERRY]
toSet() : 스트림 데이터를 Set로 저장한다.
List<String> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry")); Set<String> set1 = list.stream() .map(s -> s.toUpperCase()) .collect(Collectors.toSet()); System.out.println(set1); // [APPLE, GRAPE, BANANA, MELON, STRAWBERRY]
joining() : 스트림 데이터를 이어붙인다.
List<String> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry")); String result = list.stream() .collect(Collectors.joining()); System.out.println(result); String result2 = list.stream() .collect(Collectors.joining(" ")); System.out.println(result2); // AppleBananaMelonGrapeStrawberry // Apple Banana Melon Grape Strawberry
foreach() : 스트림 데이터를 순회적으로 작업가능하다.
List<String> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry")); list.stream() .map(s -> s.toUpperCase()) .forEach(System.out::println); // APPLE // BANANA // MELON // GRAPE // STRAWBERRY
728x90'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] int[] to Integer[], Integer[] to int[] (0) 2024.08.29 [Java] Optional<T> (0) 2023.03.12 [Java] Arrays.asList() (0) 2023.03.11 [Java] Selenium(셀레니움) (0) 2022.08.18 [Java] 크롤링(Crawling) (0) 2022.08.17