데이터에 이름표를 적용하여 저장하기
HashMap클래스는 Map 인터페이스를 상속받는 '자료 보관소'이기
때문에, 암묵적 형변환의 규칙에 따라 Map 형태로 선언하고
HashMap 형태로 할당한다.
선언과 할당시에 HashMap의 이름표로 사용할 데이터 형(String)과
HashMap에 저장할 데이터형을 클래스의 이름으로 명시해야 하는데,
이를 '제너릭스'라 한다.
제너릭스에 명시할 수 있는 데이터 형은 반드시 클래스 이름이여야 하기 때문에 기본 자료형을 보관할 경우 Wrapper 클래스의 이름을 사용해야 한다.
Map<String, 저장할 데이터의 클래스이름> data =
new HashMap<String, 저장할 데이터의 클래스이름>();
기존에 저장된 데이터와 중복되는 이름이 저장될 경우, 기존에 저장된 데이터를 덮어 씌우게 된다.
예시
package collection;
import java.util.HashMap;
import java.util.Map;
public class Main01 {
public static void main(String[] args) {
// 데이터를 저장할 배열 생성
// 제너릭 -> <값의 이름, 값의 종류>
Map<String, Integer> hm = new HashMap<String, Integer>();
// 데이터 추가는 put 메서드 사용
// -> 중복을 허용하지 않는다.
hm.put("kor", 90);
hm.put("math", 100);
hm.put("eng", 95);
// 객체를 넣는 것이므로 null 사용가능
hm.put("kor", null);
hm.put("kor", 80);
// 저장된 갯수 얻기
System.out.println( "hashmap size : " + hm.size());
// 저장된 데이터 꺼내기
System.out.println( hm.get("kor") );
System.out.println( hm.get("math") );
System.out.println( hm.get("eng") );
}
}
결과
hashmap size : 3
80
100
95
무제한 확장 가능한 배열
ArrayList는 List 인터페이스를 상속받은 클래스로, 데이터를 이름표 없이 무제한으로 보관할 수 있다.
ArryaList에 추가되는 데이터는 순차적으로 배열과 같은 인덱스 번호를 부여 받는다.
상위 인터페이스 형으로 선언하고 ArrayList클래스로 객체를 할당하며, 선언과 할당 시에는 보관하고자 하는 자료형에 대한 제너릭스를 명시한다.
List<저장할 데이터의 클래스 이름> list
= new ArrayList<저장할 데이터의 클래스 이름>();
예시
package collection;
import java.util.ArrayList;
import java.util.List;
public class Main02 {
public static void main(String[] args) {
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("데이터 크기 : " + count);
// 5번째 요소의 값 얻기
int value = numberList.get(4);
System.out.println("5번째 요소의 값 : " + value);
// 5번째 요소의 값 삭제
numberList.remove(4);
// 하나를 삭제 후, 전체 크기다시 조회
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);
// 리스트안에 배열될수 있는 것은 Integer뿐만아니라 내가 만들어 놓은 자바 클래스
//(데이터빈즈로 선언해놓은것)요 어레이리스트에 담을 수 있음.
//인티저도 자바가 만들어 놓은 클래스임.
}
}
데이터 크기 : 9
5번째 요소의 값 : 50
데이터 크기 : 8
5번째 요소의 값 : 60
5번째 요소의 값 : 123
데이터 크기 : 0
package collection;
public class Member {
private String name;
private String phoneNo;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNo() {
return phoneNo;
}
public void setPhoneNo(String phoneNo) {
this.phoneNo = phoneNo;
}
public Member(String name, String phoneNo) {
super();
this.name = name;
this.phoneNo = phoneNo;
}
@Override
public String toString() {
return "Member [name=" + name + ", phoneNo=" + phoneNo + "]";
}
}
package collection;
import java.util.ArrayList;
import java.util.List;
public class Main03 {
public static void main(String[] args) {
List<Member> pList = new ArrayList<Member>();
// 10명의 데이터를 추가하기 (이게 일반적이다. 각 개인 정보는 연관성이 없으니까)
// pList.add(new Member("회원0", "01012345670"));
// pList.add(new Member("회원1", "01012345671"));
// pList.add(new Member("회원2", "01012345672"));
// pList.add(new Member("회원3", "01012345673"));
// pList.add(new Member("회원4", "01012345674"));
// pList.add(new Member("회원5", "01012345675"));
// pList.add(new Member("회원6", "01012345676"));
// pList.add(new Member("회원7", "01012345677"));
// pList.add(new Member("회원8", "01012345678"));
// pList.add(new Member("회원9", "01012345679"));
//하지만 귀찮으니까 이렇게 해도되고 Random으로하는 방법도 있음.
for (int i = 0; i < 10; i++) {
pList.add(new Member("회원" + i, "0101234567" + i));
}
// 출력
// toString();
// List에 저장된 데이터를 하나꺼내면, Member 클래스 형의 객체
for (int i = 0; i < pList.size(); i++) {
System.out.println(pList.get(i).toString());
}
}
}
Member [name=회원0, phoneNo=01012345670]
Member [name=회원1, phoneNo=01012345671]
Member [name=회원2, phoneNo=01012345672]
Member [name=회원3, phoneNo=01012345673]
Member [name=회원4, phoneNo=01012345674]
Member [name=회원5, phoneNo=01012345675]
Member [name=회원6, phoneNo=01012345676]
Member [name=회원7, phoneNo=01012345677]
Member [name=회원8, phoneNo=01012345678]
Member [name=회원9, phoneNo=01012345679]