Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 티모장인
- 데이터베이스 DELETE
- 데이터베이스
- 데이터베이스 예제
- 사무용 노트북
- 탑마이장인
- lenovo ideapad 3
- IdeaPad 3 15ABA7
- 코딩입문
- 코딩일기
- 자바초보
- 레노버 슬림3
- 자바입문
- 데이터베이스 집합연산자
- 오라클 DELETE
- 레노버 노트북
- 데이터베이스 JOIN
- 오라클UPDATE
- 오라클
- 개발자준비
- 슬림3
- 코린이
- 레노버 아이디어패드 슬림3
- SQL
- 데이터베이스 기초
- 데이터베이스기초
- 코딩초보자
- 데이터베이스 UPDATE
- 라이젠노트북
- 가성비 노트북
Archives
- Today
- Total
스퐁지송 개발노트
22.12.05(월) 스트림 가공 본문
728x90
중복제거,원하는것만 출력
.distinct : 중복제거
.filter(조건문) : 필터처리(원하는 부분만 뽑아서 출력)
package 스트림;
import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
public class Sample06 {
public static void main(String[] args) {
List<String> list = Arrays.asList("티모","베인","티모","릴리야","티모","애쉬");
//중복제거
list.parallelStream().distinct().forEach(n->System.out.println(n));
//필터처리(원하는 것만 볼수있음)
list.parallelStream().filter(n->n.startsWith("티")).forEach(n->System.out.println(n));
System.out.println("============");
//홀수만 구하기
IntStream s = IntStream.of(1,2,3,4,5,6,7,8,9,10);
s.filter(n -> n%2==1).forEach(n->System.out.println(n));
//s배열에 2로 나눠서 1이남는 숫자를 필터로 뽑음
}
}
릴리야
베인
티모
애쉬
티모
티모
티모
1
3
5
7
9
split
list의 값중 구분기호를 줄바꿈해줌
package 스트림;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
public class Sample07 {
public static void main(String[] args) {
List<String> list1 = Arrays.asList("크기 가","전부 는","아니 잖아요");
//split list1의 값중 구분기호를 줄바꿈해줌
list1.stream().flatMap(data->Arrays.stream(data.split(" ")))
.forEach(System.out::println);
//.forEach(data -> System.out.println(data)); 위에코드와 동일
System.out.println();
list1.stream().flatMap(data->Stream.of(data.split(" +")))
.forEach(System.out::println);
//글자수 표시 (정수만가능)
list1.stream().map(data-> data.length())
.forEach(System.out::println);
}
}
크기
가
전부
는
아니
잖아요
크기
가
전부
는
아니
잖아요
4
4
6
실수와 관련된 코드
package 스트림;
import java.util.Arrays;
import java.util.List;
import java.util.stream.DoubleStream;
public class Sample07 {
public static void main(String[] args) {
/* 실수와 관련된 코드 */
List<String> list2 = Arrays.asList("1.1, 2.2, 3.3", "4.4, 5.5, 6.6");
DoubleStream ds = list2.parallelStream().flatMapToDouble(data->{
String[] arr = data.split(","); //" 1.1" " 2.2" " 3.3" " 4.4" " 5.5" " 6.6" 처리
double[] darr = new double [arr.length];
for(int i =0; i<darr.length;i++) {
darr[i] = Double.parseDouble(arr[i].trim()); //trim = 공백제거
//parseDouble = arr[i]를 실수형태로 바꿔라
}
return Arrays.stream(darr);
});
ds.forEach(System.out::println);
}
}
4.4
5.5
6.6
1.1
2.2
3.3
Skip,Limit
package 스트림;
//skip
import java.util.stream.IntStream;
public class Sample08 {
public static void main(String[] args) {
IntStream p = IntStream.range(0,10);
IntStream s = IntStream.range(0,10);
p.forEach(n->System.out.print(n + " "));
System.out.println();
s.skip(4).forEach(n->System.out.print(n + " "));
//4번째배열방 다음부터 출력
//s.limit(4).forEach(n->System.out.print(n + " "));
//4번째배열방 까지만 출력
s.skip(3).limit(4).forEach(n->System.out.print(n + " "));
}
}
0 1 2 3 4 5 6 7 8 9 10
skip사용시 결과
4 5 6 7 8 9
limit 사용시 결과
0 1 2 3
s.skip(3).limit(4) 사용시 결과
3 4 5 6
s.skip(4).limit(3) 사용시 결과
3
List 내림차순 오름차순 정렬
.sorted() 오름차순정렬하기
Comparator.reverseOrder() 내림차순/역순으로 정렬
package 스트림;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class Sample09 {
public static void main(String[] args) {
List<String> list = Arrays.asList("티모","마이","베인","유미");
list.stream().sorted().forEach(System.out::println); //오름차순
System.out.println();
list.stream().sorted(Comparator.reverseOrder()) //역순
.forEach(System.out::println);
}
}
마이
베인
유미
티모
티모
유미
베인
마이
.count() 배열값을 카운트해준다
.sum() 배열값을 더해준다
.findFirst() 첫번째 배열값을 불러온다
package 스트림;
import java.util.Arrays;
import java.util.OptionalInt;
public class Sample10 {
public static void main(String[] args) {
int[] arr = new int[100];
for (int i = 0; i < 100; i++) {
arr[i] = i + 1;
}
// count는 long으로 처리
// 배열을 스트림으로 하고 카운트 해준다.
long c = Arrays.stream(arr).count();
System.out.println("count : " + c);
//1~100더하기
int s = Arrays.stream(arr).sum();
System.out.println("sum : " + s);
//첫번째 값 불러오기
OptionalInt first = Arrays.stream(arr).findFirst();
System.out.println("first : " + first.getAsInt());
}
}
count : 100
sum : 5050
first : 1
예제1
중복없이 짝수만 내림차순으로 정렬
package 스트림;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
public class Sample11 {
public static void main(String[] args) {
// 짝수만 중복제거 내림차순 출력
int[] data = { 5, 6, 4, 2, 3, 1, 1, 2, 2, 4, 8 };
// 짝수만 골라내기
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < data.length; i++) { //data.length = int[]date 배열의 길이
if (data[i] % 2 == 0) {
list.add(data[i]); //date에서의 홀수값을 list에 입력
}
}
System.out.println(list);
// 중복된값 없애기
HashSet<Integer> set = new HashSet<>(list);
System.out.println(set); //set 중복값을 없앤다
ArrayList<Integer> dlist = new ArrayList<>(set);
dlist.sort(Comparator.reverseOrder());
//sort=오름차순정렬 왜냐 set으로 처리하면 순서없이 값이 저장됨
System.out.println(dlist);
// 결론적으로 나온 값 (dlist)를 다시 새 배열에 넣음
int[] result = new int[dlist.size()];
for (int i = 0; i < result.length; i++) {
result[i] = dlist.get(i);
}
for (int i = 0; i < result.length; i++) {
System.out.println(result[i]);
}
}
}
[6, 4, 2, 2, 2, 4, 8]
[2, 4, 6, 8]
[8, 6, 4, 2]
8
6
4
2
더 간단하게 스트림을 사용해서
package 스트림;
import java.util.Arrays;
import java.util.Comparator;
public class Sample12 {
public static void main(String[] args) {
int[] data = { 5, 6, 4, 2, 3, 1, 1, 2, 2, 4, 8 };
int[] result = Arrays.stream(data) //IntStream생성
.boxed() //IntStream -> Stream<Integer>로 변경
.filter(n->n%2==0) //짝수 걸러내기
.distinct() //중복제거
.sorted(Comparator.reverseOrder()) //내림차순정렬
.mapToInt(Integer::intValue)
.toArray();
for(int i=0; i<result.length; i++) {
System.out.println(result[i]);
}
}
}
8
6
4
2
728x90
'JAVA 입문 시작' 카테고리의 다른 글
22.12.06(화) Thread간의 협업 wait,notify,notifyAll (0) | 2022.12.06 |
---|---|
22.12.06(화) Thread (0) | 2022.12.06 |
22.12.05(월) 스트림 (0) | 2022.12.05 |
22.12.05(월) andThen과 compose (0) | 2022.12.05 |
22.12.05(월) 람다식 Operator, Predicate (0) | 2022.12.05 |
Comments