본문 바로가기

JAVA BASE95

06. [자바] 스트림(Stream) 스트림? 배열이나 컬렉션뿐만 아니라 파일에 저장된 데이터도 다른 클래스이지만 같은 방식으로 다룰 수 있게 해주며 재사용성도 높여주는 기능이다. 스트림을 사용하면 코드가 간결하고 이해하기 쉬우며 재사용성이 높아진다. 스트림은 소스를 변경하지 않는다, 데이터에서 소스를 읽기만 하기 때문이다. 스트림은 Iterator처럼 일회용 이다, 때문에 다시 사용하려면 스트림을 다시 생성해야한다. 스트림이 제공하는 다양한 연산으로 복잡한 작업들을 간단히 처리할 수 있다. 스트림의 생성 과정과 사용예 1. 스트림 생성의 대상이 될 String[]과 List를 생성 String[] strArr = {"aaa", "ddd", "ccc"}; List strList = Arrays.asList(strArr);2. 스트림 생성 S.. 2021. 1. 13.
05. [자바] 람다 메소드 참조 람다식은 '메서드 참조(method reference)'라는 방법으로 한번 더 간략히 할 수 있다. 다만조건이 있는데 람다식이 하나의 메서드만 호출 하는 경우이다. // 메소드 Function f1 = s -> Integer.parseInt(s); // 람다식 Function f2 = Integer::parseInt; // 메소드 참조 BiFunction f3 = (s1, s2) -> s1.equals(s2); // 람다식 BiFunction f4 = String::equals; // 메소드 참조 // 생성자 Supplier s1 = () -> new ArrayList(); // 람다식 Supplier s2 = ArrayList::new; // 메소드 참조 Function f5 = i -> new int.. 2021. 1. 13.
04. [자바] 람다식의 합성과 결합 람다의 합성과 결합? 함수형 인터페이스를 구현한 람다식 몇가지를 합성하거나 결합하는게 가능하다. 합성은 여러 기능을 합치는 것을 뜻하고 결합은 논리 연산자의 &&(and), ||(or), !(not)을 뜻한다. 합성 메소드 설 명 andThen() 함수 f, g가 있다고 했을때 f.andThen(g)는 f를 적용 후 g를 적용한다. compose() 함수 f, g가 있다고 했을때 f.andThen(g)는 g를 적용 후 f를 적용한다. identity() 함수를 적용하기 이전과 이후가 동일한 '항등 함수'가 필요할 때 사용한다. (1을 넣으면 1이 나옴) 결합 메소드 설 명 and() 그리고 의 의미로 논리연산자 '&&'와 동일하다. or() 또는 의 의미로 논리연산자 '||'와 동일하다. negate().. 2021. 1. 13.
03. [자바] 람다 - function패키지 인터페이스 java.util.function패키지 java.util.function패키지에 람다식을 구현할 수 있는 여러 형식의 인터페이스를 미리 정의해 놓았다. 가능하면 매번 새로운 함수형 인터페이스를 정의하지 말고 이 패키지의 인터페이스를 활용하는게 좋다. 매개변수가 없거나 하나인 함수형 인터페이스 함수형 인터페이스 메소드 설 명 java.lang.Runnable void run() 매개변수가 없고, 반환값도 없음. Supplier T get() 매개변수가 없고, 반환값만 있음. Consumer void accept(T t) 매개변수만 있고, 반환값이 없음. Function R apply(T t) 하나의 매개변수로 결과를 반환함. UnaryOperator T apply(T t) Function의 자손으로 매개변.. 2021. 1. 12.