본문 바로가기
반응형

전체 글87

java.util.function 패키지 Java에서 함수형 프로그래밍을 지원하기 위해 인터페이스와 함수형 인터페이스를 포함하는 패키지이다. 이 패키지는 람다 표현식과 스트림API와 함께 사용되며, 함수형 프로그래밍 스타일로 코드를 작성할 수 있게 도와 준다. 매번 새로운 함수형 인터페이스를 정의하는 것보다 가능하면, function 패키지의 인터페이스를 활용하는 것이 일관성 측면이나, 재사용성에서 효율이 좋다. function 패키지의 주요 함수형 인터페이스 함수형 인터페이스 메서드 설명 java.lang.Runnable void run() - 매개변수 x - 반환 값 x Supplier T get() - 매개변수 x - 반환 값 o Consumer void accept(T t) - 매개변수 o - 반환 값 x - Supplier와 반대 Fu.. 2023. 9. 13.
Set 컬렉션 - TreeSet(개념) Set 컬렉션 - TreeSet (개념)TreeSet은 Set 인터페이스를 구현한 컬렉션 클래스이며, 이진 검색 트리(binary search tree)라는 자료구조의 형태로 데이터를 저장한다. 이진 검색 트리는 검색, 범위 검색, 정렬에 높은 성능을 제공하는 자료구조이며, TreeSet은 이진 검색 트리의 성능에서 향상된 '레드-블랙 트리(Red-Black tree)로 구현되어 있다. *참고* 이진 검색 트리의 성능을 향상시키기 위해 여러 가지 변형과 최적화된 자료 구조가 개발되었다. 향상된 자료 구조는 특정 작업에서 더 빠른 속도와 효율성을 제공하며, 시간 복잡도 문제를 완화해준다. 이처럼 향상된 이진 검색 트리 중에 TreeSet은 트리의 높이를 최소화하는 데 중점을 둔 구조인 '균형 이진 검색 트.. 2023. 9. 6.
(람다식) 함수형 인터페이스와 메소드 레퍼런스 함수형 인터페이스(Functional Interface) 함수형 인터페이스는 Java에서 함수형 프로그래밍을 지원하기 위해 람다 표현식을 편리하게 다룰 수 있도록 Java 8에 도입된 개념이다. 함수형 인터페이스는 인터페이스가 단 하나의 추상 메서드만을 가지는 것이 주요 특징이며, 이를 람다 표현식으로 해당 추상 메서드의 구현을 간결하게 만든다. *참고* 함수형 인터페이스는 단 하나의 추상메서드만 가지고 있다는 조건이 성립하면, default 메서드 또는 static 메서드를 여러 개 가지고 있어도 상관 없다. 앞서 포스팅한 블로그에서는 람다식을 "익명 함수"라고 표현했지만, 자바에서의 람다식은 익명 클래스의 객체와 동등하다고 말할 수 있다. 즉, 자바에 함수형 프로그래밍을 적용하기 위해 함수를 객체로 .. 2023. 9. 5.
람다식이란? 람다식(Lambda Expression) 람다식은 JDK1.8부터 추가된 개념이며, 람다식의 도입으로 자바는 객체지향언어인 동시에 함수형 언어가 되었다. 람다식은 간단히 말해서 메소드를 '하나의 식'으로 간결하게 정의하고 전달할 수 있게 해주는 문법적 구조이다. 메소드를 람다식의 문법 구조로 작성하면 메소드의 이름과 반환 값이 생략되므로, 람다식을 '익명 함수(anonymous function)'라고 표현하기도 한다. *참고* 함수형 언어란? 프로그래밍 패러다임 중 하나로, 프로그램을 수학적인 함수처럼 다루는 방법이다. 여기서 함수는 '입력'을 받아 '출력'을 만들어내는 작은 부분의 코드 조각이며, 이 조각들을 결합해서 더 큰 프로그램을 만드는 것을 함수형 프로그래밍이라고 말한다. 예를 들어, 두 정수를.. 2023. 9. 4.
익명 객체(Anonymous Object) 익명 객체 (Anonymous Object, 익명 클래스) 익명 객체란 이름이 없는 객체를 말한다. 익명 객체는 명시적으로 클래스를 선언하지 않기 때문에 쉽게 생성할 수 있으며, 주로 1회성으로 사용되거나 간단한 작업을 수행할 때 생성된다. 익명 객체는 일반적으로 두 가지로 분류할 수 있으며, 클래스를 상속해서 만드는 경우를 '익명 자식 객체'라 말하고, 인터페이스를 구현해서 인스턴스를 생성하는 것을 '익명 구현 객체'라고 한다. *참고* 익명 객체는 '익명 자식 객체'와 '익명 구현 객체', 두 가지 개념으로 분류되는 것이 아니다. 단지 익명 객체의 구현 방식에 차이가 있다는 것을 설명하기 위함이다. 익명 자식 객체 (익명 자식 클래스) 익명 자식 객체란, 기존 클래스의 하위 클래스를 익명으로 정의하고.. 2023. 9. 4.
List 컬렉션, LinkedList LinkedList에 대한 이해 배열은 가장 기본적인 형태의 자료구조로, 사용법이 쉽고 데이터의 접근 속도가 빠르다는 장점이 있지만 다음과 같은 단점이 있다. 고정적 크기 한번 크기를 지정하면 변경할 수가 없어, 새로운 배열을 생성해서 데이터를 복사해야 하는 번거로움이 있다. 빠른 접근속도를 위해서 충분한 크기의 배열을 만들어야 하므로 메모리가 낭비 될 수 있다. 데이터 추가 및 삭제 순차적으로 데이터를 추가하고 끝에서부터 데이터를 삭제하는 것은 빠르지만, 중간에 데이터를 추가하거나 삭제를 하는 경우, 이를 위해 요소 간 이동을 하는 시간 비용이 크다. 이러한 배열의 단점을 보완하기 위해서 연결 리스트가 고안되었다. 이 자료구조의 특징은 불연속적으로 존재하는 데이터를 서로 연결한 형태로 설계한 것이다. .. 2023. 9. 3.
반응형