Stream은 데이터를 연속적으로 읽고 쓰는 구조이며 바이트와 문자 단위로 나뉩니다.
-InputStream / OutputStream
-FileInputStream / FileOutputStream
-Reader / Writer
-FileReader / FileWriter
-BufferedReader / BufferedWriter
| 편의성 | 성능 |
|---|---|
| Scanner | BufferedReader |
| 쉬움 | 어려움 |
| 느림 | 빠름 |
try (FileInputStream in = new FileInputStream("a.txt");
FileOutputStream out = new FileOutputStream("b.txt")) {
byte[] buffer = new byte[1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
} catch (IOException e) {
e.printStackTrace();
}
람다식은 익명 함수로서 Java 8에 도입된 함수형 프로그래밍 스타일입니다.
List<String> names = Arrays.asList("Kim", "Lee", "Park");
names.forEach(name -> System.out.println(name));
-Predicate<T>: 조건식 (boolean 반환)
-Function<T,R>: 입력 T → 결과 R
-Consumer<T>: T 소비, void 반환
List<String> names = Arrays.asList("Kim", "Lee", "Park");
List<String> filtered = names.stream()
.filter(name -> name.startsWith("K"))
.collect(Collectors.toList());
-map, flatMap
-sorted, distinct
-reduce (누적 연산)
list.parallelStream().forEach(System.out::println);