Lesson: Introduction to Collections

Dev.Hammy·2024년 1월 18일

Java API

목록 보기
11/15

강의: 컬렉션 소개
컬렉션(때때로 컨테이너라고도 함)은 단순히 여러 요소를 단일 단위로 그룹화하는 개체입니다. 컬렉션은 집계 데이터를 저장, 검색, 조작 및 전달하는 데 사용됩니다. 일반적으로 포커 핸드(카드 모음), 메일 폴더(편지 모음) 또는 전화번호부(이름과 전화번호 매핑)와 같이 자연스러운 그룹을 형성하는 데이터 항목을 나타냅니다. Java 프로그래밍 언어 또는 다른 프로그래밍 언어를 사용해 본 적이 있다면 이미 컬렉션에 익숙할 것입니다.

컬렉션 프레임워크란 무엇입니까?
컬렉션 프레임워크는 컬렉션을 표현하고 조작하기 위한 통합 아키텍처입니다. 모든 컬렉션 프레임워크에는 다음이 포함됩니다.

인터페이스: 컬렉션을 나타내는 추상 데이터 유형입니다. 인터페이스를 사용하면 표현의 세부 사항과 관계없이 컬렉션을 조작할 수 있습니다. 객체 지향 언어에서 인터페이스는 일반적으로 계층 구조를 형성합니다.
구현: 컬렉션 인터페이스의 구체적인 구현입니다. 본질적으로 재사용 가능한 데이터 구조입니다.
알고리즘: 컬렉션 인터페이스를 구현하는 개체에 대해 검색 및 정렬과 같은 유용한 계산을 수행하는 방법입니다. 알고리즘은 다형성이라고 합니다. 즉, 적절한 컬렉션 인터페이스의 다양한 구현에서 동일한 방법을 사용할 수 있습니다. 본질적으로 알고리즘은 재사용 가능한 기능입니다.
Java 컬렉션 프레임워크 외에도 컬렉션 프레임워크의 가장 잘 알려진 예로는 C++ 표준 템플릿 라이브러리(STL)와 Smalltalk의 컬렉션 계층 구조가 있습니다. 역사적으로 컬렉션 프레임워크는 매우 복잡하여 학습 곡선이 가파르다는 평판을 얻었습니다. 우리는 이 장에서 스스로 배우게 될 것처럼 Java 컬렉션 프레임워크가 이러한 전통을 깨뜨린다고 믿습니다.

Java 컬렉션 프레임워크의 이점
Java 컬렉션 프레임워크는 다음과 같은 이점을 제공합니다.

프로그래밍 노력 감소: 컬렉션 프레임워크는 유용한 데이터 구조와 알고리즘을 제공함으로써 프로그램 작동에 필요한 하위 수준의 "배관"이 아닌 프로그램의 중요한 부분에 집중할 수 있도록 해줍니다. Java Collections Framework는 관련되지 않은 API 간의 상호 운용성을 촉진함으로써 API를 연결하기 위해 어댑터 객체나 변환 코드를 작성할 필요가 없도록 해줍니다.
프로그램 속도 및 품질 향상: 이 컬렉션 프레임워크는 유용한 데이터 구조 및 알고리즘의 고성능, 고품질 구현을 제공합니다. 각 인터페이스의 다양한 구현은 상호 교환이 가능하므로 컬렉션 구현을 전환하여 프로그램을 쉽게 조정할 수 있습니다. 자신만의 데이터 구조를 작성하는 번거로움에서 벗어나 프로그램의 품질과 성능을 개선하는 데 더 많은 시간을 할애할 수 있습니다.
관련되지 않은 API 간의 상호 운용성을 허용합니다. 컬렉션 인터페이스는 API가 컬렉션을 앞뒤로 전달하는 데 사용되는 언어입니다. 내 네트워크 관리 API가 노드 이름 모음을 제공하고 GUI 도구 키트에 열 제목 모음이 필요한 경우 API는 독립적으로 작성되었더라도 원활하게 상호 운용됩니다.
새로운 API를 배우고 사용하는 데 드는 노력을 줄입니다. 많은 API는 자연스럽게 입력에 대한 컬렉션을 가져와서 출력으로 제공합니다. 과거에는 이러한 각 API에는 컬렉션을 조작하는 데 사용되는 작은 하위 API가 있었습니다. 이러한 임시 컬렉션 하위 API 사이에는 일관성이 거의 없었기 때문에 처음부터 하나씩 배워야 했고, 사용할 때 실수하기 쉬웠습니다. 표준 컬렉션 인터페이스의 출현으로 문제는 사라졌습니다.
새로운 API를 설계하는 데 드는 노력이 줄어듭니다. 이는 이전 장점의 반대 측면입니다. 디자이너와 구현자는 컬렉션에 의존하는 API를 만들 때마다 바퀴를 다시 만들 필요가 없습니다. 대신 표준 컬렉션 인터페이스를 사용할 수 있습니다.
소프트웨어 재사용 촉진: 표준 컬렉션 인터페이스를 준수하는 새로운 데이터 구조는 본질적으로 재사용이 가능합니다. 이러한 인터페이스를 구현하는 객체에서 작동하는 새로운 알고리즘도 마찬가지입니다.

0개의 댓글