Java(12)
-
[Java] 스트림(Stream)
스트림(Stream)이란? 자료의 대상과 관계없이 동일한 연산을 수행한다 배열, 컬렉션을 대상으로 연산을 수행한다 일관성 있는 연산으로 자료 처리를 쉽고 간단하게 한다 자료 처리에 대한 추상화가 구현되어있다 한번 생성하고 사용한 스트림은 재사용할 수 없다 자료에 대한 스트림을 생성하여 연산을 수행하면 스트림은 소모된다 다른 연산을 수행하기 위해서는 스트림을 다시 생성해야 한다 만약 한번 사용한 스트림을 재사용하면 java.lang.IllegalStateException: stream has already been operated upon or closed (스트림이 이미 작동되었거나 닫혔습니다) 이렇게 에러가 나는 것을 확인할 수 있다 int[] arr = {1,2,3}; int sum = Arrays...
2022.02.24 -
[Java] 객체 지향 프로그래밍 vs 람다식
객체 지향 프로그래밍과 람다식(함수형 프로그래밍)을 비교해보자. 문자열을 연결하는 예제로 두 가지 방식을 구현해 보면서 비교해보자 인터페이스 생성 public interface StringConcat { public void myString(String str1, String str2); } 인터페이스를 구현하는 클래스 생성 public class StringConcatImpl implements StringConcat { @Override public void myString(String str1, String str2) { System.out.println(str1 + str2); } } 메인 클래스 생성 public class StringConcatTest { public static void ma..
2022.02.23 -
[Java] 함수형 인터페이스로 람다식 구현
자바에서 함수형 인터페이스로 간단한 람다식을 구현해보자. 자바 인터페이스를 생성 package lambda; @FunctionalInterface public interface MyNumber { int getMin(int num1, int num2); } 함수형 인터페이스를 사용하려면 @FunctionalInterface 어노테이션을 붙여줘야 한다. 자바 클래스 생성 package lambda; public class MyNumberTest { public static void main(String[] args) { MyNumber myNumber = (x, y) -> x > y ? y : x; // 삼항 연산자 : (조건 ? true : false) System.out.println(myNumber...
2022.02.22 -
[Java] 함수형 프로그래밍 - 람다식(Lambda expression)
자바는 객체를 만들어 맴버 변수를 선언하고 메서드로 기능을 구현하는 객체 지향 프로그래밍이다. Java 8 버전부터 지원하는 함수형 프로그래밍(람다식)에 대해 알아보자. 함수형 프로그래밍과 람다식 자바에서 지원하는 함수형 프로그래밍을 람다식이라고 한다 함수의 구현과 호출만으로 프로그래밍이 수행되는 방식이다 함수형 프로그래밍(Functional Programming)은 순수 함수(pure function)를 구현하고 호출함으로써 외부 자료에 부수적인 영향(side effect)를 주지 않도록 구현하는 방식이다 (순수 함수 : 매개변수만 사용해 만든 함수) 함수를 기반으로 하는 프로그래밍이고 입력받는 자료 외에 외부 자료를 사용하지 않아 병렬처리가 가능하다 함수의 기능이 독립적이라서 동일한 자료에 대해 동일..
2022.02.22 -
[Java] 내부 클래스란? (inner class)
클래스 내부에 선언한 클래스로 이 클래스를 감싸고 있는 외부 클래스와 밀접한 연관이 있는 경우가 많다 다른 외부 클래스에서 사용할 일이 거의 없는 경우에 내부 클래스로 선언해서 사용한다 중첩 클래스라고도 한다 인스턴스 내부 클래스, 정적(static) 내부 클래스, 지역(local) 내부 클래스, 익명(anonymous) 내부 클래스가 있다 인스턴스 내부 클래스 내부적으로 사용할 클래스를 선언 (private으로 선언) 외부 클래스가 생성된 후 생성됨 (정적 내부 클래스와 다름) private이 아닌 내부 클래스는 다른 외부 클래스에서 생성할 수 있다 OutClass outClass = new OutClass(); OutClass.InClass inClass = outClass.new InClass();..
2022.02.21