컬렉션 프레임워크(collection framework)란
자료구조(data structure)란 데이터의 모임이다. 각 데이터를 일정한 규칙에 따라 나열하여 개별 데이터를 처리할 때보다 처리가 용이하다. 자바에서 컬렉션 프레임워크는 여러 데이터를 효과적으로 처리할 수 있도록 표준화된 클래스들의 집합을 의미한다.
컬렉션(collection) | 데이터의 저장 |
프레임워크(framework) | 사용방법을 정해둔 라이브러리 |
--> 자바 컬렉션 프레임워크 : 자바를 사용하여 데이터 저장하고 처리하는 방법을 정리해둔 인터페이스 및 클래스 모음
Colletion 인터페이스
java.util 패키지에 있으며, java.lang 패키지의 Interface Iterable<T> 인터페이스의 Subinterface이다.
Iterable<T> 인터페이스는 iterator()메서드 1개를 가지는데, iterator()메서드는 Iterator 인터페이스를 리턴하여 Iterator 클래스의 기능을 활용할 수 있는 메서드이다.
Iterator 인터페이스의 메서드
데이터의 각 요소에 반복적으로 접근하여 요소를 가져오는 기능을 제공하는 인터페이스이다. 메서드는 hasNext(), next(), remove() 3개밖에 없다. Iterator 를 이용하여 데이터를 처리하는 과정은 후반부에 다루도록 한다.
메서드 | 내용 |
boolean hasNext() | iteration 의 다음 요소가 있는지 여부 |
E next() | iteration 다음값을 반환 |
void remove() | iterator로부터 반환된 값 삭제하기 |
colletion 인터페이스의 주요 Subinterface
위에서 설명했지만 java.util 패키지에 Collection 인터페이스와 Map 인터페이스가 있으며 그 아래 Subinterface 및 구현객체들이 존재한다. Map 인터페이스와 Collection 인터페이스의 경우 별도로 존재하는 것을 확인할 수 있다.
주요 인터페이스 설명
자바 컬렉션 프레임워크의 자주 사용되는 인터페이스는 아래와 같다. 참고로 아래 컬렉션은 인터페이스이기 때문에 객체를 생성할 수 없으며 구현객체를 사용하여 객체를 생성해야 한다. 물론 다형성(polymorphism)을 통해 인터페이스의 참조변수가 구현 클래스의 인스턴스를 참조하도록 설정하면 생성이 가능하다.
List list = new ArrayList(); //다형성을 이용한 생성코드 예시
자료구조 | 내용 |
List interface | 순서가 있는(원소의 중복을 허용하는) 데이터 집합 |
Set interface | 순서가 없는(원소의 중복될 수 없는) 데이터 집합 |
Map interface | key와 value로 구성된 요소를 원소로 하는 데이터 집합. key는 중복될 수 없다. |
Iterator 와 Enumeration
Iterator(반복자) 와 Enumeration(열거형) 은 컬렉션의 각 요소들에 순차적으로 접근하여 처리하는데 사용한다. (Set, Map의 경우 index가 없어서 모든 항목을 순서대로 가져올 수는 없다. 대신 순차적으로 빠짐없이 모든 요소를 가져올 수 있다)
Enumeration은 Vector 및 HashTable에서 사용할 수 있다. Iterator의 경우 Collection을 상속, 구현하는 모든 객체에서 사용할 수 있다. Enumeration을 대신하기 위해 도입된 것이 Iterator 이고, Iterator 가 효율성에도 앞선다고 보인다.
코드 예제
import java.util.Iterator;
import java.util.Vector;
public class Test01_vector {
public static void main(String[] args) {
Vector<String> vector = new Vector<>();
String[] strArr = {"김연아", "추신수", "박찬호", "김연경", "심권호"};
//반복문으로 vector라는 컬렉션에 값을 삽입하기
//Vector는 List를 구현한 객체이다
for(int i=0; i<strArr.length; i++){
String name = strArr[i];
vector.add(name);
}
//Iterator(반복자)를 이용해 값 가져오기
Iterator<String> iterator = vector.iterator();
while (iterator.hasNext()){
String str = iterator.next();
iterator.remove(); //값을 꺼내고 나서 삭제하기
System.out.println(str);
}
int size = vector.size();
System.out.println(size); //0
}
}
'Java > 기본' 카테고리의 다른 글
[Java] 컬렉션프레임워크103 - List 컬렉션 - Stack, queue (0) | 2021.06.24 |
---|---|
[Java] 컬렉션프레임워크102 - List 컬렉션 - ArrayList, LinkedList, Vector (0) | 2021.06.24 |
[Java] 예외처리103 - 예외강제 발생시키기 & 사용자 정의 예외 (0) | 2021.06.20 |
[Java] 자바 프로그램의 실행 과정 (0) | 2021.06.20 |
[Java] 유용한 클래스 - StringTokenizer (update.2021-11-19) (0) | 2021.06.20 |