일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 차트
- aggregation
- Java
- Mac
- sort
- Elasticsearch
- 900gle
- query
- zip 파일 암호화
- License
- docker
- matplotlib
- analyzer test
- token filter test
- springboot
- zip 암호화
- licence delete curl
- aggs
- license delete
- API
- plugin
- 파이썬
- high level client
- Kafka
- Test
- ELASTIC
- MySQL
- TensorFlow
- flask
- Python
Archives
- Today
- Total
개발잡부
[java] java stream 본문
반응형
//스트림 생성
//컬렉션
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();
//배열
String[] array = new String[]{"a","b","c"};
Stream<String> stream1 = Arrays.stream(array);
Stream<String> stream2 = Arrays.stream(array, 1, 3); //정적메소드 Arrays.stream() 에 인자를 입력 //인덱스 1 포함, 3제외
//빌더
Stream<String> stream3 = Stream.<String>builder().add("a").add("b").build();
//Generator
Stream<String> stream4 = Stream.generate(()->"a").limit(3); //a를 무한대생성 limit 3으로 끊음
//Iterator
Stream<Integer> stream5 = Stream.iterate(100, n -> n+10).limit(5);
//empty Stream
Stream<String> stream6 = Stream.empty();
//기본타입 (Primitive Type)에 대하여 오토박싱과 언박싱이 일어날때 오버헤드가 발생해서 성능저하가 있을 수 있다. 방어
IntStream intStream = IntStream.range(1,10); // 1~9
LongStream longStream = LongStream.range(1,10000); //1~ 9999
//제네릭을 이용한 클래스로 사용하려면
Stream<Integer> stream7 = IntStream.range(1,10).boxed();
//random 으로 뽑아내기
DoubleStream stream8 new Random().doubles(3); //랜덤 숫자 3개 생성
//문자열 스트림
IntStream stream9 = "Hello, world".chars(); //ASCII 코드값을 스트림 형태로 뽑아주는 예제코드
Stream<String> stream10 = Pattern.compile(",").splitAsStream("a,b,c"); // 구분자 (delimiter) 를 이용
Stream<String> stream11 = Files.lines(Paths.get("filetext.txt"), Charset.forName("UTF-8")); //파일데이터 라인단위로 읽어 UTF-8로 디코딩
//스트림 연결 - concat
Stream<String> stream12 = Stream.of("Apple", "Banana","Orange");
Stream<String> stream13 = Stream.of("삼성", "엘지","한화");
Stream<String> stream14 = Stream.concat(stream12,stream13);
//Filter
Stream<Integer> stream15 = IntStream.range(1,10).boxed();
stream15.filter(v -> ((v % 2) == 0)).forEach(System.out::println);
//map - 람다식을 인자로 받고 새로운 데이터를 만들어 낸다
Stream<Integer> stream16 = IntStream.range(1, 10).boxed();
stream16.filter(v -> (v % 2)==0).map(v -> v *10).forEach(System.out::println);
//flatMap
List<List<String>> lists = Arrays.asList((Arrays.asList("a","b","c"), Arrays.asList("A","B","C"));
List<String> flatList = lists.stream().flatMap(Collection::stream).collect(Collectors.toList());
//스트림 데이터 정렬 sorted
Stream<T> sorted();
Stream<T> sorted(Comparator<? super T> comparator);
//로깅을 하고 싶다 - peek
int sumPeek = IntStream.range(1,10).peek(System.out::println).sum();
//스트림 결과 생성
int sum = IntStream.range(1,10).sum();
long count = IntStream.range(1,10).count();
OptionalInt max = IntStream.range(1,10).max();
OptionalInt min = IntStream.range(1,10).min();
OptionalDouble avg = IntStream.range(1,10).average();
//reduce
//스트림에서 나오는 값들을 accumulator 함수로 누적
Optional<T> reduce (BinaryOperator<T> accumulator);
// 위내용 + 초기값 (identity) 있는
T reduce(T identity, BinaryOperator<T> accumulator);
(a,b) -> Integer.sum(a, b);
//Collect
Set<Integer> evenNumber = IntStream.range(1,1000).boxed().filter(n ->(n % 2 == 0)).collect(Collectors.toSet());
//Collect.joining()
List<String> fruit = Arrays.asList("Apple", "Banana","Orange");
String returnValue = fruit.stream().collect(Collectors.joining());
String returnValueAddText = fruit.stream().collect(Collectors.joining(",", "<", ">"));
//foreach
IntStream.range(1,1000).boxed().filter(n -> (n%2 == 0)).forEach(System.out::println);
반응형
Comments