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
'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 |