본문 바로가기

Java85

54.스트림(Stream) 스트림 - 자료의 대상과 관계없이 동일한 연산을 수행 - 배열, 컬렉션을 대상으로 연산을 수행 - 일관성 있는 연산으로 자료의 처리를 쉽고 간단하게 함 - 자료 처리에 대한 추상화가 구현되었다고 함 - 한번 생성하고 사용한 스트림은 재사용할 수 없음 - 자료에 대한 스트림을 생성하여 연산을 수행하면 스트림은 소모됨 - 다른 연산을 수행하기 위해서는 스트림을 다시 생성해야 함 - 스트림 연산은 기존 자료를 변경하지 않음 - 자료에 대한 스트림을 생성하면 스트림이 사용하는 메모리 공간은 별도로 생성되므로 연산이 수행돼도 기존 자료에 대한 변경은 발생하지 않음 - 스트림 연산은 중간 연산과 최종 연산으로 구분됨 - 스트림에 대한 중간 연산은 여러 개의 연산이 적용될 수 있지만 최종 연산은 마지막에 한 번만 적.. 2022. 6. 1.
53.객체지향 프로그래밍 방식, 람다식 구현 방식 비교 객체 지향 프로그래밍과 람다식 비교 - 문자열 두 개를 연결하여 출력하는 예제를 두 가지 방식으로 구현해 보자 예제 - StringConcat.java(interface) public interface StringConcat { public void makeString(String s1, String s2); } - StringConcatImpl.java public class StringConcatImpl implements StringConcat{ @Override public void makeString(String s1, String s2) { System.out.println(s1+","+s2); } } - StringConcatTest.java public class StringConcatTe.. 2022. 6. 1.
52.함수형 인터페이스와 람다식 구현하여 사용 함수형 인터페이스 선언 - 람다식을 선언하기 위한 인터페이스 - 익명 함수와 매개 변수만으로 구현되므로 인터페이스는 단 하나의 메서드만을 선언해야함 - @FunctionalInterface 에노테이션(annotation) 함수형 인터페이스라는 의미, 내부에 여러 개의 메서드를 선언하면 에러남 @FunctionalInterface public interface MyNumber { int getMax(int num1, int num2); int add(int x, int y); } 람다식 구현과 호출 예제 - MyNumber.java(interface) @FunctionalInterface public interface MyNumber { int getMax(int num1, int num2); } - My.. 2022. 6. 1.
51.람다식 함수형 프로그래밍과 람다식 - 자바는 객체 지향 프로그래밍 : 기능을 수행하기 위해서는 객체를 만들고 그 객체 내부에 멤버 변수를 선언하고 기능을 수행하는 메서드를 구현 - 자바 8부터 함수형 프로그래밍 방식을 지원하고 이를 람다식이라 함 - 함수의 구현과 호출만으로 프로그래밍이 수행되는 방식 - 함수형 프로그래밍(Functional Programming : FP) : 순수함수를 구현하고 호출함으로써 외부 자료에 부수적인 영향(side effect)를 주지 않도록 구현하는 방식입니다. 순수 함수란 매개변수만을 사용하여 만드는 함수입니다. 즉, 함수 내부에서 함수 외부에 있는 변수를 사용하지 않아 함수가 수행되더라도 외부에는 영향을 주지 않습니다. 함수를 기반으로 하는 프로그래밍이고 입력받는 자료 이외에 .. 2022. 6. 1.