
인터페이스 순서(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()
- 담긴 데이터를 전부 삭제한다.