본문 바로가기
Java/stream

Java Stream 예시 6

by S.T.Lee 2022. 11. 13.
package lec08.fileio04.stream.ex1;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamMain06 {
	
	public static void main(String[] args) {
		
		//long - short, int, long
		long getCountNumber = Stream.of(1,2,3,4,5).count();
		System.out.println("스트링의 총 갯수 : " + getCountNumber);
		
		//count
		long getCountNumber01 = Stream.of("Ship", "Energy", "Plant", "Special", "Robot", "Engine").count();
		System.out.println("스트링의 총 갯수 :" + getCountNumber01);
		
		//Optional
		Optional<Integer> maxStream01 = Stream.of(3,5,1).max(Integer::compare);
		Integer integer = maxStream01.get();
		System.out.println(maxStream01);
		System.out.println(integer);
		
		Integer integer1 = Stream.of(3,5,1).max(Integer::compare).get();
		System.out.println(integer1);
		
		Optional<Integer> min = Stream.of(3,5,1).min(Integer::compare);
		Integer integer11 = min.get();
		System.out.println(integer11);
		
		Integer integer2 = Stream.of(3,5,1).min(Integer::compare).get();
		System.out.println(integer2);
		
		//isEmpty가 아닌 첫번째 값
		//findfirst는 filter 조건에 일치하는 첫번째 값을 내보낸다
		Optional<String> first = 
				Stream.of("", "account", "humanresource", "procurement", "sales", "manufacturing")
				.filter(s -> !s.isEmpty())
				.findFirst();
		System.out.println("일치하는 첫번째 값 :" + first.get());
		
		//filter가 꼭 선행되어야하는 것은 아니다
		Optional<String> first1 = Stream.of("반도체", "가전", "전장").findFirst();
		System.out.println("일치하는 첫번째 값 :" + first1.get());
		
		//any
		//꼭 아무거나 뽑는거는 아닌거 같다
		Optional<String> any =
				Stream.of("", "account", "", "humanresource", "procurement", "sales", "manufacturing")
				.filter(i -> !i.isEmpty())
				.findAny();
		System.out.println("일치하는 첫 번째 값 :" + any.get());
		
		Optional<String> any1 = Stream.of("반도체", "가전", "전자").findAny();
		System.out.println(any1.get());
		
		//anyMatch
		boolean b = Stream.of("samsung", "lg", "hyundai", "sk").anyMatch(i -> i.startsWith("s"));
		System.out.println(b);
		
		boolean a = Stream.of("samsung", "lg", "hyundai", "sk").anyMatch(i->i.startsWith("D"));
		System.out.println(a);
		
		boolean c = Stream.of("samsung", "lg", "hyundai", "sk").anyMatch(i->i.equals("samsung"));
		System.out.println(c);
		
		//allMatch
		boolean a1 = Stream.of("Samsung", "Samsung", "Samsung").allMatch(i -> i.equals("Samsung"));
		System.out.println(a1);
		
		//nonematch
		boolean a2 = Stream.of("sam", "lg", "hyu", "sk").noneMatch(s -> s.equals("kkk"));
		System.out.println(a2);
		
		boolean a3 = Stream.of("sam", "lg", "hyu", "sk").noneMatch(s -> s.equals("sam"));
		System.out.println(a3);
		
		String[] strings = Stream.of("korea", "america", "japan").toArray(String[]::new);
		System.out.println(Arrays.toString(strings));
		
		//reduce
		//파라미터 1개 = 적용할 함수
		//파라미터 2개 = 계산에 사용할 초기깂, 적용할 함수
		Integer reduce = Stream.of(1,2,3).reduce(0, Integer::sum);
		System.out.println(reduce);
		
		Integer reduce1 = Stream.of(1,2,3).reduce(3, Integer::sum);
		System.out.println(reduce1);
	
		Integer reduce2 = Stream.of(1,2,3).reduce(0, (x,y) -> x+y);
		System.out.println(reduce2);
		
		Integer reduce3 = Stream.of(1,2,3).reduce(1, (x,y) -> x*y);
		System.out.println(reduce3);
		
		Optional<Integer> reduce5 = Stream.of(1,2,3).reduce(Integer::sum);
		System.out.println(reduce5.get());
		
		Optional<Integer> reduce6 = Stream.of(1,2,3).reduce(Integer::max);
		System.out.println(reduce6.get());
		
		Optional<Integer> reduce7 = Stream.of(4,2,3).reduce(Integer::min);
		System.out.println(reduce7.get());
		
		//Set, List
		//collect(Collectors.toList)와 Stream.toList()의 차이는 수정 가능/불가능이다.
		String[] strArray = new String[] {"한국", "미국", "중국", "한국", "미국", "중국", "한국", "미국", "중국"};
		Set<String> collect = Stream.of(strArray).collect(Collectors.toSet());
		System.out.println(collect);
		List<String> collect2 = Stream.of(strArray).collect(Collectors.toList());
		System.out.println(collect2);
		List<String> collect3 = Stream.of(strArray).toList();
		System.out.println(collect3);
	}
	
}

 

참조

https://velog.io/@jwkim/java-stream-reduce-binaryoperator

 

[Java] Stream의 reduce()와 BinaryOperator

[Java] Stream의 reduce()와 BinaryOperator

velog.io

 

https://velog.io/@cieroyou/Stream%EC%9D%84-List%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-%EB%8B%A4%EC%96%91%ED%95%9C-%EB%B0%A9%EB%B2%95%EA%B3%BC-%EC%B0%A8%EC%9D%B4Collectors.toList-vs-Stream.toList

 

'Java > stream' 카테고리의 다른 글

Java Stream 예시 5  (0) 2022.11.13
Java Stream 예시 4  (0) 2022.11.13
Java Stream 예시 3  (0) 2022.11.13
Java Stream 예시 2  (0) 2022.11.13
Java Stream 예시 1  (0) 2022.11.13