public class Filtering {
public static void main(String[] args) {
IntStream stream1 = IntStream.of(7,5,5,2,1,2,3,5,4,6);
IntStream stream2 = IntStream.of(7,5,5,2,1,2,3,5,4,6);
stream1.distinct().forEach(e-> System.out.print(e+" "));
System.out.println();
stream2.filter(n-> n % 2 != 0 ).forEach(e-> System.out.print(e+ " "));
}
}
7 5 2 1 3 4 6
7 5 5 1 3 5
설명
예제
public class Converting {
public static void main(String[] args) {
Stream<String> stream = Stream.of("HTML","CSS","JAVA");
stream.map(s -> s.length()).forEach(System.out::println);
List<List<String>> listStream = Arrays.asList(Arrays.asList("12","123","1234"), Arrays.asList("12","123","1234"), Arrays.asList("12","123","1234"));
List<Integer> result = listStream.stream()
.flatMap(Collection::stream)
.filter(str -> str.length()>3)
.map(filtered-> Integer.parseInt(filtered))
.collect(Collectors.toList());
System.out.println("result = " + result);
}
}
4
3
4
result = [1234, 1234, 1234]
설명
-1
과 같은 음수는 에러를 던짐-1
과 같은 음수는 에러를 던짐예제
public class Limit {
public static void main(String[] args) {
IntStream stream1 = IntStream.range(0,10);
IntStream stream2 = IntStream.range(0,10);
IntStream stream3 = IntStream.range(0,10);
IntStream stream4 = IntStream.range(0,10);
IntStream stream5 = IntStream.range(0,10);
stream1.skip(4).forEach(n-> System.out.print(n+" "));
System.out.println();
stream2.limit(4).forEach(n -> System.out.print(n+" "));
System.out.println();
stream3.skip(3).limit(5).forEach(n -> System.out.print(n + " "));
System.out.println();
// param check
// stream4.skip(4).limit(-1).forEach(n -> System.out.print(n + " ")); 마이너스는 예외를 던짐: IllegalArgumentException
stream4.skip(4).limit(11).forEach(n -> System.out.print(n + " "));
System.out.println();
stream5.skip(11).forEach(n-> System.out.print(n+ " "));
System.out.println();
}
}
4 5 6 7 8 9
0 1 2 3
3 4 5 6 7
4 5 6 7 8 9
설명
reverseOrder
naturalOrder
comparing
nullsFirst
/nullsLast
예제
public class Sorting {
public static void main(String[] args) {
Stream<String> stream1 = Stream.of("JAVA","HTML","JAVASCRIPT","CSSSSSS");
Stream<String> stream2 = Stream.of("JAVA","HTML","JAVASCRIPT","CSS","PYTHON");
Stream<String> stream3 = Stream.of("JAVA","HTML","JAVASCRIPT","CSS","PYTHON");
Stream<String> stream4 = Stream.of("JAVA","HTML","JAVASCRIPT","CSS","PYTHON");
Stream<String> stream5 = Stream.of("JAVA","HTML","JAVASCRIPT","CSS",null,"PYTHON");
Stream<String> stream6 = Stream.of("JAVA","HTML","JAVASCRIPT","CSS",null,"PYTHON");
stream1.sorted().forEach(s -> System.out.print(s + " "));
System.out.println();
stream2.sorted(Comparator.comparing(e-> e.length())).forEach(s -> System.out.print(s +" "));
System.out.println();
stream3.sorted(Comparator.reverseOrder()).forEach(s-> System.out.print(s+ " "));
System.out.println();
stream4.sorted(Comparator.naturalOrder()).forEach(s-> System.out.print(s+ " "));
System.out.println();
stream5.sorted(Comparator.nullsFirst(Comparator.reverseOrder())).forEach(s-> System.out.print(s+ " "));
System.out.println();
stream6.sorted(Comparator.nullsLast(Comparator.naturalOrder())).forEach(s-> System.out.print(s+ " "));
}
}
CSSSSSS HTML JAVA JAVASCRIPT
CSS JAVA HTML PYTHON JAVASCRIPT
PYTHON JAVASCRIPT JAVA HTML CSS
CSS HTML JAVA JAVASCRIPT PYTHON
null PYTHON JAVASCRIPT JAVA HTML CSS
CSS HTML JAVA JAVASCRIPT PYTHON null
public class Peeking {
public static void main(String[] args) {
IntStream stream = IntStream.of(7,5,5,2,1,2,3,5,4,6);
stream.peek(s -> System.out.println("원본 스트림: " +s))
.skip(2)
.peek(s-> System.out.println("skip(2) 실행 후: "+s))
.limit(5)
.peek(s-> System.out.println("limit(5) 실행 후: "+s))
.sorted()
.peek(s-> System.out.println("sorted() 실행 후: "+ s))
.forEach(n-> System.out.println(n));
}
}
: 각 연산이 일어난 위치의 peek()연산의 출력 결과는 해당 스트림에 담긴 요소에 대한 값만 출력해준다는 것을 확인 가능
: 출력 순서가 보장되지 않는 모습을 보임
원본 스트림: 7
원본 스트림: 5
원본 스트림: 5
skip(2) 실행 후: 5
limit(5) 실행 후: 5
원본 스트림: 2
skip(2) 실행 후: 2
limit(5) 실행 후: 2
원본 스트림: 1
skip(2) 실행 후: 1
limit(5) 실행 후: 1
원본 스트림: 2
skip(2) 실행 후: 2
limit(5) 실행 후: 2
원본 스트림: 3
skip(2) 실행 후: 3
limit(5) 실행 후: 3
sorted() 실행 후: 1
1
sorted() 실행 후: 2
2
sorted() 실행 후: 2
2
sorted() 실행 후: 3
3
sorted() 실행 후: 5
5