코드일기장

[Java] 컬렉션 프레임웍(collections framework), Collection인터페이스 본문

컴퓨터 과학/자료구조

[Java] 컬렉션 프레임웍(collections framework), Collection인터페이스

won_hyeok2 2022. 3. 18. 20:10

 

  '자료구조'  자료구조는 Data Structure라고 한다. 보통 알고리즘 문제를 푸는데 많이 사용되며 알고리즘과 뗄 수 없는 관계이다. 

  어떤 알고리즘 문제를 풀기 위해 문제를 해석하고 다음으로 자료구조를 선택한다. 선택한 자료구조에 따라 더욱 효율적으로 알고리즘 문제를 풀 수 있다.

 

 

  많은 프로그래밍 언어들은 기본적인 자료구조들을 라이브러리로 제공해준다. 자바에서의 대표적인 자료구조는 Collection이다. 

 

 

컬렉션 (collection)

- 여러 객체(데이터)를 모아 놓은 것

 

프레임웍(framework)

- 표준화, 정형화된 체계적인 프로그래밍 방식

 

컬렉션 프레임웍(collections framework)

- 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식

- 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공

 

 

 

컬렉션 프레임웍이 등장하면서 다양한 종류의 컬렉션 클래스가 추가되고 모든 컬렉션 클래스를 표준화된 방식으로 다룰 수 있도록 체계화되었다.

 

컬렉션 프레임웍으로 프로그래머의 짐을 상당히 많이 덜어 주었다. 인터페이스와 다형성을 이용한 객체지향적 설계를 통해 표준화되어 있기 때문에 사용법을 익히기에도 편리하고 재사용, 유지보수가 좋은 코드를 작성할 수 있다.

 

 


 

 

컬렉션 프레임웍의 핵심 인터페이스

 

인터페이스 특징
List 순서가 있는 데이터의 집합, 데이터의 중복을 허용
구현클래스: ArrayList, LinkedList, Stack 등
Set 순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않는다. 예) 양의 정수 집합, 소수 집합
구현클래스: HashSet, TreeSet 등
Map 키(key)와 값(value)의 쌍(pair)으로 이루어진 데이터의 집합
순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다.
구현클래스: HashMap, TreeMap, Hashtable 등

 

 

List는 순서와 중복이 있다.

Set은 순서와 중복이 없다.

Map은 순서는 상관없고 중복은 (키는 x 값은 o)

 

 

 

인터페이스 List와 Set을 구현한 컬렉션 클래스들은 서로 많은 공통부분이 있어서 공통된 부분을 다시 뽑아 Collection인터페이스를 정의할 수 있다. Map인터페이스는 다른 형태로 컬렉션을 다루기 때문에 같은 상속계층도에 포함되지 못했다.

 

 

 


 

Collection 인터페이스

 

 

List와 Set의 조상인  Collection 인터페이스의 메서드를 조금 정리해보았다.(Java의 정석 기초편 390페이지)

 

 

메서드 설명
boolean add(Object o)
boolean addAll(Collection c)
지정된 객체(o) 또는 Collection(c) 의 객체들을 Collection에 추가한다.
void clear() Collection의 모든 객체를 삭제한다.
boolean contains(Object o)
boolean containsAll(Collection c)
지정된 객체(o) 또는 Collection의 객체들이 Collection에 포함되어 있는지 확인한다.
boolean equals(Object o) 동일한 Collection인지 비교한다.
int hashCode() Collection의 hash code를 반환한다.
boolean isEmpty() Collection이 비어있는지 확인한다.
lterator iterator() Collection의 Iterator를 얻어서 반환한다.
boolean remove(Object o) 지정된 객체를 삭제한다.
boolean removeAll(Collection c) 지정된 Collection에 포함된 객체들을 삭제한다.
boolean retainAll(Collection c) 지정된 Collection에 포함된 객체만을 남기고 다른 객체들은 Collection 에서 삭제한다. 이 작업으로 인해 Collection에 변화가 있으며 true를 그렇지 않으면 false를 반환한다.
int size() Collection에 저장된 객체의 개수를 반환한다.
Object[] toArray() Collection에 저장된 객체를 객체배열(Object[])로 반환한다.
Object[] toArray(Object[] a) 지정된 배열에 Collection의 객체를 저장해서 반환한다.

 

 

 

위에 boolean인 메서드들은 작업을 성공하거나 사실이면 true를, 그렇지 않으면 false를 반환한다.

예를 들어 boolean isEmpty() 사용해서 객체가 없으면 true 없으면 false 반환.

 

 

위에 메서드를 보면 Collection 인터페이스의 메서드들은 기본적으로 

검색, 추가, 삭제를 위한 메서드들이다.

 

 

 

 

자바 컬렉션 프레임워크 공부할 때 보면 좋은 글

https://st-lab.tistory.com/142

 

자바 [JAVA] - 자바 컬렉션 프레임워크 (Java Collections Framework)

아마 프로그래밍을 전공한다면 '자료구조'라는 단어를 들어본 적이 있을 것이다. 자료구조는 Data Structure라고 하는데, 직역하면 데이터 구조. 좀 더 자세하게 설명하자면 '일련의 일정 타입들의

st-lab.tistory.com

 

 

대표사진

<a href="https://www.flaticon.com/kr/free-icons/" title="자바 아이콘">자바 아이콘  제작자: Freepik - Flaticon</a>

https://www.flaticon.com/kr/free-icon/java_226777?term=%EC%9E%90%EB%B0%94&page=1&position=1&page=1&position=1&related_id=226777&origin=search 

 

Comments