인터페이스 순서(index) 여부 데이터 중복 허용 구현 클래스 List O O ArrayList, LinkedList, Stack, Vector 등 Set X X HashSet, TreeSet 등 Map X 키 중복 허용 X
값 중복 허용 OHashMap, TreeMap, Hashtable 등 List
는 순서대로 값이 추가되는 리스트형으로 각 정보는 고유index
를 갖는다.Set
는 순서가 없고 중복이 허용되지 않는 집합형이다.Map
은 키와 값이 한 쌍을 이루며 키 값은 중복이 허용되지 않는다. 순서index
는 갖지 않으며 키 값으로 조회한다.
HashMap 클래스는 Map
인터페이스를 상속받는 자료 보관소다.
암묵적 형변환의 규칙에 따라 Map
형태로 선언하고 HashMap
형태로 할당한다.
- 데이터에 이름표를 적용하여 저장하는 키-값 쌍을 가지며, 선언과 할당 시에 이름표로 사용할 데이터형(
String
)과 저장할 데이터형을 클래스의 이름으로 명시해야 하는데, 이를 제너릭스라 한다.- 제너릭스에 명시할 수 있는 데이터형은 반드시 클래스 이름이어야 하기 때문에 기본 자료형을 보관할 경우에는
Wrapper
클래스의 이름을 사용해야 한다.Map < String, 저장할 데이터의 클래스 이름 > data = new HashMap < String, 저장할 데이터의 클래스 이름 > ();
Map
에서는 키 값의 중복을 허용하지 않으므로 기존에 저장된 데이터와 중복되는 키 값이 저장될 경우, 데이터를 덮어씌우게 된다.
put(K key, V value)
- 제너릭스에 명시한 데이터형과 일치하는 두 변수값을 순서대로 입력하면 각각 키 값, 데이터 값에 할당되어 데이터가 생성된다.
Map<String, Integer> hm = new HashMap<String, Integer>(); hm.put("kor", 90); ------------------------------ // hm에 "kor"이라는 이름을 가진 값 90이 담긴다.
get(Object key)
- 키 값을 통해 해당 키 값을 가진 데이터를 꺼낸다.
System.out.println( hm.get("kor")); ------------------------------ // 출력결과 90
size()
- 현재 담겨 있는 데이터 수를 가져온다.
hm.put("math", 100); hm.put("eng", 95); System.out.println(hm.size()); ------------------------------ // 출력결과 - 데이터 2개를 더 추가하고 총 데이터 수를 가져온 결과 3
List
인터페이스를 상속받은 클래스로, 무제한 확장이 가능한 배열과 같다.
ArrayList
에 추가되는 데이터는 순차적으로 배열과 같은 인덱스(Index
) 번호를 부여받는다.- 상위 인터페이스 형으로 선언하고
ArrayList
클래스로 객체를 할당하며, 선언과 할당 시에는 보관하고자 하는 자료형에 대한 제너릭스를 명시한다.List < 저장할 데이터의 클래스 이름 > list = new ArrayList < 저장할 데이터의 클래스 이름 >();
add(E e)
- 제너릭스에 명시한 자료형 데이터를 새롭게 ArrayList에 추가한다.
List<Integer> numberList = new ArrayList<>(); numberList.add(10); ------------------------------ // numberList에 10이라는 값을 추가한다. // 처음으로 추가한 값이므로 0의 인덱스 값을 갖는다.
- 따로 정의한 클래스를 새롭게 생성해서 할당할 수 있다.
List<Member> pList = new ArrayList<>(); pList.add(new Member("회원0","01012345670")); ------------------------------ // 회원 이름과 전화번호를 멤버 변수로 갖는 Member 클래스 객체를 생성하여 저장한다.
get(int Index)
- 인덱스 값을 사용하여 해당 인덱스에 저장된 값을 꺼내온다.
Member item = pList.get(0); System.out.println(item.toString()); ------------------------------ // 인덱스 0에 저장된 값을 가져와 출력한다. Member [name = 회원0, phoneNo = 010-1234-5670]
size()
- HashMap과 동일하게 저장된 데이터의 수를 가져온다.
remove(int Index)
- 해당 인덱스에 저장된 값을 삭제한다.
- 중간에 저장된 값이 삭제되면 이어지는 인덱스에 담긴 값들이 삭제된 데이터 개수만큼 앞으로 이동하여 저장된다.
ex
) 10개의 값이 담겨 있던 list에서 5번째 인덱스에 저장되어 있던 값이 삭제되면 6번째 인덱스에 있던 값이 5번에 담긴다.
clear()
- 담긴 데이터를 전부 삭제한다.