방명록
- [JAVA] Stream API2021년 02월 24일 18시 10분 47초에 업로드 된 글입니다.작성자: 봉주니
Java Stream
Stream은 자바 8부터 추가된 기능으로 "컬렉션, 배열등의 저장 요소를 하나씩 참조하며 함수형 인터페이스(람다식)를 적용하며 반복적으로 처리할 수 있도록 해주는 기능"이다.
(InputStream, OutputStream같은 I/O Stream이 아니다.)
List<String> names = Arrays.asList("jeong", "pro", "jdk", "java"); // 기존의 코딩 방식 long count = 0; for (String name : names) { if (name.contains("o")) { count++; } } System.out.println("Count : " + count); // 2 // Iterator 방식 long count = 0; Iterator<String> iter = names.iterator(); while(iter.hasNext()){ String name = iter.next(); if (name.contains("o")) { count++; } } System.out.println("Count : " + count); // 2 // 스트림 이용한 방식 count = 0; count = names.stream().filter(x -> x.contains("o")).count(); System.out.println("Count : " + count); // 2
불필요한 코딩(for, if 문법)을 걷어낼 수 있고 직관적이기 때문에 가독성이 좋아진다.
Stream은 어떤 것들에 적용할 수 있을까?
Stream은 주로 Collection, Arrays에서 쓰인다.
물론 두 개 뿐만 아니라 I/O resources(ex. File), Generators, Stream ranges, Pattern 등에서도 사용할 수 있다.
해당 객체들로 부터 Stream을 생성하는 법은 스스로 찾아보도록 하고 기본적으로 자주 쓰이는 것들만 간단히 소개한다.
List<String> names = Arrays.asList("jeong", "pro", "jdk", "java"); names.stream(); //Collection에서 스트림 생성 Double[] dArray = {3.1, 3.2, 3.3}; Arrays.stream(dArray);//배열로 스트림 생성 Stream<Integer> str = Stream.of(1,2); // 스트림 직접 생성
배열에서의 스트림 활용
//String 배열 String[] strArray = { "홍길동", "이순신", "임꺽정"}; Stream<String> strStream = Arrays.stream(strArray); strStream.forEach(a -> System.out.print(a + ",")); System.out.println(); //int 배열 int[] intArray = { 1, 2, 3, 4, 5 }; IntStream intStream = Arrays.stream(intArray); intStream.forEach(a -> System.out.print(a + ",")); System.out.println();
클래스에서의 스트림 활용
class Student { private String name; private int score; public Student(String name, int score) { this.name = name; this.score = score; } public String getName() { return name; } public int getScore() { return score; } } public class FromCollectionExample { public static void main(String[] args) { List<Student> studentList = Arrays.asList( new Student("홍길동", 10), new Student("이순신", 20), new Student("임꺽정", 30) ); Stream<Student> stream = studentList.stream(); stream.forEach(s -> System.out.println("이름 : "+ s.getName())); } }
반응형'Java' 카테고리의 다른 글
[JAVA] BigInteger (0) 2021.04.01 [JAVA] X-Frame-Options deny (0) 2021.03.12 [JAVA] 람다식 (Lambda) (0) 2021.02.24 [JAVA] NIO 패키지 (0) 2021.02.24 [JAVA] 자바7 자바8 차이 (0) 2021.02.24 다음글이 없습니다.이전글이 없습니다.댓글