https://mangkyu.tistory.com/112
https://mangkyu.tistory.com/search/stream?page=5
JDK8 부터 지원되는 기능이며 함수형으로 프로그래밍이 가능하도록 해줌
Stream 은 데이터를 추상화하고 처리하는데 자주사용되는 함수들을 정의해놓았음
- 원본 데이터를 변경하지 않음
스트림으로 생성한 데이터는 원본데이터가 아닌 원본데이터를 조회하여 별도의 요소들로 스트림을 생성함
원본데이터를 읽기만 하며, 수정,정렬 등의 작업은 하지않음
- 일회용임
한번 사용이 끝나면 다시 사용할수 없으며, 다시 사용하고 싶으면 스트림을 다시 생성해줘야함
닫힌 스트림을 사용하면 IllegalStateException 발생함
- 내부 반복으로 작업을 처리함
반복문의경우 아래와 같이 처리를 했었지만, 내부메소드로 forEach등을 가지고 있어서 코드가 간결해짐
for(String a : aaaaList){
System.out.println(a)
}
=================================================================================================================
public static void main(String[] args) {
//wordProcessTest();
String[] nameArray = {"kimsungchul", "yanghyeuny", "egiljung","1"};
List<String> nameList = Arrays.asList(nameArray);
// 별도의 스트림을 생성하여서 정렬
Stream<String> nameStream = nameList.stream();
Stream<String> arrayStream = Arrays.stream(nameArray);
//스트림 사용
// 복사한 데이터를 출력
System.out.println("=============================");
nameStream.sorted().forEach(System.out::println);
System.out.println("=============================");
arrayStream.sorted().forEach(System.out::println);
// 스트림은 한번 사용하고 닫히므로 한번 더 호출할 경우 오류 발생
//arrayStream.sorted().forEach(System.out::println);
System.out.println("=============================");
//스트림 미사용 (기존방식 ,for , 향상된 for)
//배열 정렬
Arrays.sort(nameArray);
//이름 리스트 정렬
Collections.sort(nameList);
//아래 두개의 방식으로 출력
for(String s : nameArray){
System.out.println(s);
}
System.out.println("=============================");
for(int i=0;i<nameList.size();i++){
System.out.println(nameList.get(i));
}
System.out.println("=============================");
List<String> strList = Arrays.asList("A3" , "B2" , "A1" , "B3" , "A2" , "B1", "C3" , "C2" , "D1");
strList
.stream() //스트림 생성
.filter(s ->s.startsWith("C")) //C 로시작하는애들만 필터
.map(String::toLowerCase) //필터된 문자에 대해서 소문자로 변환
.sorted() //정렬
.forEach(System.out::println); //출력
System.out.println("=============================");
for(String a : strList){
System.out.println("## a : " + a);
}
Stream<String> strStream = strList.stream();
strStream.forEach(System.out::println);
}
=================================================================================================================