다수 객체를 저장, 관리할 수 있음
| . | 배열 | 컬렉션 |
|---|---|---|
| 장점 | 모든 데이터 저장 가능, 사용 편리 | 자동 크기 조절, 명시적 이름의 메소드 사용 |
| 단점 | 처음 지정한 크기에서 공간 크기 변경 불가 | 사용 방법 다소 복잡 |
배열의 문제점을 해소하고 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 java.util 패키지에 컬렉션과 관련된 인터페이스와 클래스들이 포함되어 있다.
이들을 총칭해 컬렉션 프레임워크라고 부른다.
List, Set, Map 등의 인터페이스를 통해 다양한 컬렉션 클래스를 이용할 수 있다.
ArrayListVectorLinkedListHashSetTreeSetHashMapHashTableTreeMapPropertiesListArrayList, Vector, LinkedListSetHashSet, TreeSetMapHashMap, HashTable, TreeMap, PropertiesArrayListnull을 담을 수 있음import java.util.ArrayList;
| 기능 | 메소드 | 설명 |
|---|---|---|
| 객체 추가 | add(Object obj) | 객체를 맨 끝에 추가 |
| 객체 추가 | add(int index, Object obj) | 해당 인덱스에 객체 추가 |
| 객체 추가 | set(int index, Object obj) | 해당 인덱스의 객체를 주어진 객체로 바꿈 |
| 객체 검색 | contains(Object obj) | 해당 객체가 저장되어 있는지 여부를 반환 |
| 객체 검색 | get(int index) | 해당 인덱스에 저장된 객체 반환 |
| 객체 검색 | isEmpty() | 컬렉션이 비어있는지 조회 |
| 객체 검색 | size() | 저장된 객체 수 반환 |
| 객체 삭제 | clear() | 저장된 모든 객체 삭제 |
| 객체 삭제 | remove(int index) | 해당 인덱스에 저장된 객체 삭제 |
| 객체 삭제 | remove(Object obj) | 해당 객체 삭제 |
ArrayList란?ArrayList에 객체를 추가하는 순서대로 인덱스 번호 매겨짐(0부터)ArrayList<데이터타입> 변수명 = new ArrayList<데이터타입>();int값 넣으면 그 만큼의 메모리를 할당하며 초기화할 수 있음toString() 메소드가 오버라이드 되어 있어 리스트를 출력하면 내부 원소들을 예쁘게 확인할 수 있음LinkedList란?ArrayList는 데이터를 인덱스로 관리하지만 LinkedList는 인접 참조를 링크해서 체인처럼 관리ArrayList보다 성능이 좋음Map| 기능 | 메소드 | 설명 |
|---|---|---|
| 객체 추가 | put(Object key, Object value) | 주어진 키와 값을 Map에 추가 |
| 객체 검색 | containsKey(Object key) | 주어진 키가 있는지 여부 반환 |
| 객체 검색 | containsValue(Object value) | 주어진 값이 있는지 여부 반환 |
| 객체 검색 | get(Object key) | 주어진 키에 해당하는 값 반환 |
| 객체 검색 | isEmpty() | 컬렉션이 비어있는지 여부 반환 |
| 객체 검색 | keySet() | 모든 키를 Set 객체 담아서 리턴 |
| 객체 검색 | size() | 저장된 키 총 개수 리턴 |
| 객체 삭제 | clear() | Map의 모든 객체 삭제 |
| 객체 삭제 | remove(Object key) | 해당 키와 일치하는 객체 삭제 |
HashMap이란?Map 인터페이스를 구현한 대표적인 Map 컬렉션HashMap<키_데이터타입, 값_데이터타입> 변수명 = new HashMap<키_데이터타입, 값_데이터타입>();keySet()과 for-each문을 이용하여 데이터 접근 가능for(String key, map.keySet()) {
System.out.println(map.get(key));
}list.remove(value)