데이터에 이름표를 적용하여 저장하기
HashMap 클래스는 Map 인터페이스를 상속받는 '자료 보관소'이기 때문에, 암묵적 객체 형변환의 규칙에 따라 Map 형태로 선언하고 HashMap 형태로 할당
선언과 할당시에 HashMap의 이름표로 사용할 데이터형(String)과 HashMap에 저장할 데이터형을 클래스의 이름으로 명시해야 하는데,
이를 '제너릭스'라 한다.
제너릭스에 명시할 수 있는 데이터형은 반드시 클래스 이름이여야 하기 때문에 기본 자료형을 보관할 경우 Wrapper 클래스의 이름을 사용한다.
Map<String, 저장할 데이터의 클래스이름>data
= new HashMap<String, 저장할 데이터의 클래스이름>();
기존에 저장된 데이터와 중복되는 이름이 저장될 경우,
기존에 저장된 데이터를 덮어 씌우게 된다.
// 데이터를 저장할 배열 생성
// 제너릭 -> <값이름, 값종류>
Map<String, Integer> hm
= new HashMap <String, Integer>();
// 데이터 추가는 put 메서드 사용
// - 중복을 허용하지 않는다.
hm.put("kor", 95);
hm.put("mat", 100);
hm.put("eng", 85);
// 지정된 갯수 얻기
hm.put("eng", null);
System.out.println("HashMap size : " + hm.size());
// 객체를 넣는 것이므로 null 사용가능
// 데이터꺼내기
System.out.println(hm.get("kor"));
System.out.println(hm.get("mat"));
System.out.println(hm.get("eng"));
무제한 확장 가능한 배열
ArrayList는 List 인터페이스를 상속받는 클래스로, 데이터를 이름표 없이 무제한으로 보관할 수 있다.
ArralyList에 추가되는 데이터는 순차적으로 배열과 같은 인덱스 번호를 부여 받는다.
상위 인터페이스 형으로 선언하고 ArrayList클래스로 객체를 할당하며, 선언과 할당시에는 보관하고자 하는 자료형에 대한 제너릭스를 명시한다.
List <저장할 데이터의 클래스이름> list
= new ArrayList<저장할 데이터의 클래스이름>();
// 객체 생성시 제너릭스의 사용
// - 클래스 이름 오른쪽에 <자료형>의 형식으로 표현
// 이때 자료형에는 클래스타입만 가능하다
// 기본 데이터형을 사용하고자 하는 경우에는
// 해당 데이터형의 WrapperClass를 사용해야 한다.
List<Integer> numberList = new ArrayList<Integer>();
//데이터추가
numberList.add(10);
numberList.add(20);
numberList.add(30);
numberList.add(40);
numberList.add(50);
numberList.add(60);
numberList.add(70);
numberList.add(80);
numberList.add(90);
// 추가된 데이터의 수량
int count = numberList.size();
System.out.println("데이터의 크기 : " + numberList.size());
// 5번째 요소의 값얻기
int value = numberList.get(4);
System.out.println("5번째 요소의 값 : " + numberList.get(4));
// 5번째 요소의 값 삭제
numberList.remove(4);
// 하나 삭제후 전체 크기 재배치 -> 8개
count = numberList.size();
System.out.println("데이터의 크기 : " + count);
// 5번째 요소의 값 다시 얻기
value = numberList.get(4);
System.out.println("5번째 요소의 값 : " + value);
// 5번째 자리에 데이터 추가
numberList.add(4,123);
value = numberList.get(4);
System.out.println("5번째 요소의 값 : " + value);
// 전체 삭제
numberList.clear();
count = numberList.size();
System.out.println("데이터의 크기 : " + count);