※Stream 이어서
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import stream.User;
public class StreamTest {
public boolean checkEven(int number) {//filter사용, 조건식이기에 boolean타입
return number % 2 == 0;
}
public static void main(String[] args) {
// filter(): 조건식이 true일 경우만 추출
//filter은 return
StreamTest streamTest = new StreamTest();
IntStream.range(0, 10).filter(data -> data%2 ==0).forEach(System.out::println);
IntStream.range(0, 10).filter(streamTest::checkEven).forEach(System.out::println);//참조형으로
// 0~9 중 짝수 출력
}
}
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import stream.User;
public class StreamTest {
public static void main(String[] args) {
sorted(): 정렬
ArrayList<Integer> datas = new ArrayList<Integer>();
StreamTest streamTest = new StreamTest();
// IntStream.rangeClosed(1, 10).map(data -> 10 - data).forEach(datas::add);
IntStream.rangeClosed(1, 10).map(streamTest::change).forEach(datas::add); // 객체사용
//9~0까지 출력
System.out.println(datas);
datas.stream().sorted().forEach(System.out::println);//오름차순 정렬
datas.stream().sorted(Collections.reverseOrder()).forEach(System.out::println);// 다시 내림차순
}
}
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import stream.User;
public class StreamTest {
public static void main(String[] args) {
// collect(): 결과를 다양한 타입으로 리턴해준다.
ArrayList<Integer> datas = new ArrayList<Integer>(Arrays.asList(30,20,90,40,80));
datas.stream().sorted(); // 정렬 출력을 하기위해stream으로 이어써야함
System.out.println(datas); // 정렬안됨
datas=(ArrayList<Integer>)datas.stream().sorted().collect(Collectors.toList());
//stream.sorted 사용시 이렇게 사용해야 변수에 저장가능
System.out.println(datas);// 오름차순 정렬됨
datas.sort(null); // 오름차순
System.out.println(datas); // stream 안해도 정렬
// 컬렉션에서는 stream에 있는 sorted를 사용하지 않고 sort를 사용하여 직접 접근한 주소를 정렬시킨다.
datas.sort(Collections.reverseOrder());//내림차순
System.out.println(datas);
// List<Integer> results = datas.stream().sorted().collect(Collectors.toList());
// // 리스트 사용시 내림차순
// System.out.println(results);
}
}
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import stream.User;
public class StreamTest {
public Integer getTwoTimes(Integer number) {
return number * 2;
} // map에 사용
public boolean checkEven(int number) {//filter사용, 조건식이기에 boolean타입
return number % 2 == 0;
}
public int change(int number) { //sorted 정렬
return 10 - number;
}
public static void main(String[] args) {
ArrayList<Integer> datas = new ArrayList<Integer>(Arrays.asList(30,20,90,40,80));
datas.stream().map(String::valueOf).collect(Collectors.joining(","));// joining:값전체를 원하는 구분점으로 연결하여 문자열 값으로 리턴
System.out.println(datas);
ArrayList<Integer> datas1 = new ArrayList<Integer>(Arrays.asList(10, 30, 15));
System.out.println(datas1.stream().map(String::valueOf).collect(Collectors.joining(":")));
}
}
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
//stream 실습
public class StreamTask {
public static int changeToInteger(int c) {
return c - 48;
}
public static void main(String[] args) {
// 10~1까지 ArrayList에 담고 출력
// ArrayList<Integer> datas = new ArrayList<Integer>();
// IntStream.range(0, 10).map(data -> 10 - data).forEach(datas::add);
// System.out.println(datas);
// 1~10까지 ArrayList에 담고 출력
// ArrayList<Integer> datas = new ArrayList<Integer>();
// IntStream.rangeClosed(1, 10).forEach(datas::add);
// System.out.println(datas);
// ABCDEF를 각 문자별로 출력
// String data = "ABCDEF";
// data.chars().forEach(c -> System.out.println((char)c));
// 1~100까지 중 홀수만 ArrayList에 담고 출력
// ArrayList<Integer> datas = new ArrayList<Integer>();
// IntStream.rangeClosed(1, 100).filter(data -> data % 2 == 1).forEach(datas::add);
// System.out.println(datas);
// A~F까지 중 D제외하고 ArrayList에 담고 출력
// ArrayList<Character> datas = new ArrayList<Character>();
// IntStream.range('A', 'F').map(c -> c > 67 ? c + 1 : c).forEach(data -> datas.add((char)data));
// System.out.println(datas);
// 5개의 문자열을 모두 소문자로 변경("Black", "WHITE", "reD", "yeLLow", "PINk"), toLowerCase() 사용
// ArrayList<String> datas = new ArrayList<String>(Arrays.asList("Black", "WHITE", "reD", "yeLLow", "PINk"));
// datas.stream().map(String::toLowerCase).forEach(System.out::println);
// 1~100까지 중 짝수만 ArrayList에 담고 출력
// ArrayList<Integer> datas = new ArrayList<Integer>();
// IntStream.rangeClosed(1, 100).filter(data -> data % 2 == 0).forEach(datas::add);
// System.out.println(datas);
// "Apple", "banana", "Melon" 중 첫 번째 문자가 대문자인 문자열 출력
// ArrayList<String> datas = new ArrayList<String>(Arrays.asList("Apple", "banana", "Melon"));
// datas.stream().filter(data -> data.charAt(0) >= 'A')
// .filter(data -> data.charAt(0) <= 'Z')
// .forEach(System.out::println);
// 한글을 정수로 변경
// String hangle = "공일이삼사오육칠팔구";
// String input = "일공이사";
// input.chars().map(hangle::indexOf).forEach(System.out::print);
// 정수를 한글로 변경 "1024" -> '1' - 48 = 1
// String hangle = "공일이삼사오육칠팔구";
// String input = "1024";
// input.chars().map(StreamTask::changeToInteger).forEach(i -> System.out.print(hangle.charAt(i)));
}
}
※실습
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;
import sun.jvm.hotspot.gc.parallel.PSYoungGen;
public class StreamTask {
public static void main(String[] args) {
// 10~1까지 ArrayList에 담고 출력
ArrayList<Integer> datas = new ArrayList<Integer>();
IntStream.range(0, 10).map(data ->10-data).forEach(datas::add); //10부터니까 data -10을 해준다
System.out.println(datas);
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;
import sun.jvm.hotspot.gc.parallel.PSYoungGen;
public class StreamTask {
// 1~10까지 ArrayList에 담고 출력
ArrayList<Integer> datas = new ArrayList<Integer>();
IntStream.rangeClosed(1, 10).forEach(datas::add);
System.out.println(datas);
}
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;
import sun.jvm.hotspot.gc.parallel.PSYoungGen;
public static void main(String[] args) {
public class StreamTask {
ABCDEF를 각 문자별로 출력
String data = "ABCDEF";
data.chars().forEach(c-> System.out.println((char)c)); {
}
}
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;
import sun.jvm.hotspot.gc.parallel.PSYoungGen;
public class StreamTask {
public static void main(String[] args) {
// 1~20까지 중 홀수만 ArrayList에 담고 출력
ArrayList<Integer> datas = new ArrayList<Integer>();
IntStream.rangeClosed(1, 20).filter(data-> data%2!=0).forEach(datas::add);
System.out.println(datas);
}
}
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;
import sun.jvm.hotspot.gc.parallel.PSYoungGen;
public class StreamTask {
public static void main(String[] args) {
// A~F까지 중 D제외하고 ArrayList에 담고 출력
ArrayList<Character> datas = new ArrayList<Character>();
IntStream.range('A', 'F').map(c-> c>67? c+1:c).forEach(data -> datas.add((char)data));
System.out.println(datas);
}
}
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;
import sun.jvm.hotspot.gc.parallel.PSYoungGen;
public class StreamTask {
public static void main(String[] args) {
// 5개의 문자열을 모두 소문자로 변경("Black", "WHITE", "reD", "yeLLow", "PINk"), toLowerCase() 사용
ArrayList<String> datas = new ArrayList<String>(Arrays.asList("Black", "WHITE", "reD", "yeLLow", "PINk"));
datas.stream().map(String::toLowerCase).forEach(System.out::println);
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;
import sun.jvm.hotspot.gc.parallel.PSYoungGen;
public class StreamTask {
public static void main(String[] args) {
// 1~20까지 중 짝수만 ArrayList에 담고 출력
ArrayList<Integer> datas = new ArrayList<Integer>();
IntStream.rangeClosed(1, 20).filter(c -> c%2==0).forEach(datas::add);
System.out.println(datas);
}
}
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;
import sun.jvm.hotspot.gc.parallel.PSYoungGen;
public class StreamTask {
public static void main(String[] args) {
// "Apple", "banana", "Melon" 중 첫 번째 문자가 대문자인 문자열 출력
ArrayList<String> datas = new ArrayList<String>(Arrays.asList("Apple","banana","Melon"));
datas.stream().filter(c -> c.charAt(0)>='A').
filter(c->c.charAt(0)<='Z').
forEach(System.out::println)
}
}
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;
import sun.jvm.hotspot.gc.parallel.PSYoungGen;
public class StreamTask {
public static void main(String[] args) {
// 한글을 정수로 변경
String hangle = "공일이삼사오육칠팔구";
String input = "구공삼사";
input.chars().map(hangle::indexOf).forEach(System.out::print);
} //input 내용을 hangle의 인덱스 번호로 출력
}
package stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.IntStream;
import com.sun.net.httpserver.Filter;
import com.sun.tools.javac.code.Attribute.Array;
import sun.jvm.hotspot.gc.parallel.PSYoungGen;
public class StreamTask {
public static int changeToInteger(int c) {
return c - 48;
}
public static void main(String[] args) {
// 정수를 한글로 변경 "1024" -> '1' - 48 = 1
String hangle = "공일이삼사오육칠팔구";
String input = "3024";
input.chars().map(StreamTask::changeToInteger).
//c-48이 담긴 메서드
forEach(i -> System.out.print(hangle.charAt(i)));
}} // 한글의 인덱스
// 메서드로 인해 한글이 정수로 변해서 hangle의 인덱스에 있는 값으로 바뀌어 출력
'웹개발 수업 > JAVA' 카테고리의 다른 글
웹개발_JAVA 21 (0) | 2023.03.06 |
---|---|
웹개발_JAVA 20 (0) | 2023.02.21 |
웹개발_JAVA 18 (2) | 2023.02.15 |
웹개발_JAVA 17 (0) | 2023.02.14 |
웹개발_JAVA 16 (0) | 2023.02.09 |
댓글