배열을 사용하면 비효율적인 문제가 있습니다. 그 중 하나가 크기가 고정적이라는 것입니다.
그리고 배열안의 데이터를 삭제하면 해당 인덱스의 데이터는 비어있어 메모리가 낭비되는 등 여러 문제점들이 발생합니다. 이러한 문제점을 해결하기 위해, 널리 알려져 있는 자료구조를 바탕으로 객체나 데이터들을 효율적으로 관리 할 수 있는 자료구조들을 만들어 놓았습니다. 대표적으로 List, Set, Stack, Queue등이 있습니다.
List 컬렉션은 객체를 일려로 늘어놓은 구조로 이루어져 있습니다. 객체를 인덱스로 관리하기 때문에 List 컬렉션에 객체를 추가하면 자동 인덱스가 부여됩니다. 인덱스는 객체를 검색, 삭제할 때 사용합니다. 객체 자체를 저장하는 것이 아니라 객체의 번지를 참조합니다.
set 컬렉션과 다른점이 동일한 객체를 저장하는 것을 허락합니다.
List 컬렉션의 종류로는 Arraylist, Vector, LinkedList 가 있습니다. 각각의 종류는 다른 포스터에서 다룰 것 입니다.
- boolean add(E e) : 주어진 객체를 맨 끝에 추가합니다.
- void add(int index, E element) : 주어진 인덱스에 객체를 추가합니다.
- set(int index, E element) : 주어진 인덱스에 저장된 객체를 주어진 객체로 바꿉니다.
- boolean contains(Object o) : 주어진 객체가 있는지에 대한 여부를 검색합니다.
- E get(int index) : 주어진 인덱스에 저장된 객체를 리턴합니다.
- isEmpty() : 컬렉션이 비어있는지 여부를 확인합니다.
- int size() : 저장되어 있는 전체 객체 수를 리턴합니다.
- E remove(int index) : 주어진 인덱스에 저장된 객체를 삭제합니다.
- void clear() : 주어진 인덱스에 저장된 객체를 삭제합니다.
- boolean remove(Object o) : 주어진 객체를 삭제합니다.
List 컬렉션은 저장 순서를 유지하지만, Set 컬렉션은 저장 순서가 유지되지 않습니다. 또한 객체를 중복해서 저장할 수 없고, 하나의 null만 저장할 수 있습니다.
Set 컬렉션의 종류로는 HashSet, LinkedHashSet, TreeSet 등이 있습니다.
- boolean add(E e) : 주어진 객체를 저장 후 성공적이면 true를 중복 객체면 false를 리턴합니다.
- boolean contains(Object o) : 주어진 객체가 저장되어있는지 여부를 리턴합니다.
- Iterator iterator() : 저장된 객체를 한번씩 가죠오는 반복자를 리턴합니다.
- isEmpty() : 컬렉션이 비어있는지 조사합니다.
- int Size() : 저장되어 있는 전체 객체수를 리턴합니다.
- void clear() : 저장된 모든 객체를 삭제합니다.
- boolean remove(Object o) : 주어진 객체를 삭제합니다.
Map 컬렉션은 키(key)와 값(value)으로 구성된 객체를 저장하는 구조를 가지고 있는 자료구조입니다. 키는 중복으로 저장할 수 없고 값은 중복으로 저장할 수 있으며 중복된 key값이 들어온다면 기존의 값은 없어지고 새로운 값으로 대치됩니다. Map은 리스트나 배열처럼 순차적으로(sequential) 해당 요소 값을 구하지 않고 key를 통해 value를 얻습니다.. 맵(Map)의 가장 큰 특징이라면 key로 value를 얻어낸다는 점입니다. 따라서 Map 컬렉션은 키(key)로 데이터를 관리합니다. Map 컬렉션을 구현하는 대표적인 클래스들은 HashMap, Hashtable, LinkedHashMap, TreeMap 등이 있습니다.
- V put(K key, V value) : 주어진 키와 값을 추가하여 저장되면 값을 리턴합니다.
- boolean containsKey(Object Key) : 주어진 키가 있는지 확인합니다.
- boolean containsValue(Object value) : 주어진 값이 있는지 확인합니다.
- Set<Map.Entry<K,V>> entrySet() : 모든 Map.Entry 객체를 Set에 담아 리턴합니다.
- Set keySet() : 모든 키를 Set객체에 담아서 리턴합니다.
- V get(Object key) : 주어진 키에 있는 값을 리턴합니다.
- boolean isEmpty() : 컬렉션이 비어있는지 조사합니다.
- int Size() : 저장되어 있는 전체 객체의 수를 리턴합니다.
- Collection values() : 저장된 모든 값을 Collection에 담아서 리턴합니다.
- void clear() : 저장된 모든 Map.Entry를 삭제합니다.
- V remove(Object Key) : 주어진 키와 일치하는 Map.Entry를 삭제하고 값을 리턴합니다.