🔎 다수의 데이터를 쉽게 처리할 수 있는 표준화 된 방법을 제공하는 클래스들로, 기존 배열형태의 자료 저장에서 좀 더 다양한 데이터들을 저장하기 위한 필수 클래스이다.
-> 인덱스 값을 호출해 출력값을 불러오는 '배열'과는 다르게 값을 특정 이름으로 지정해 출력값을 불러오는 방식
-> ArrayList와 HashMap이 가장 많이 사용된다.
🔎 데이터에 이름표를 적용하여 저장하기
🔎 HashMap 클래스는 Map 인터페이스를 상속받는 '자료 보관소'이기 때문에, 암묵적 형변환의 규칙에 따라 Map 형태로 선언하고 HashMap 형태로 할당한다.
🔎 선언과 할당시에 HashMap의 이름표로 사용할 데이터형(String)과 HashMap에 저장할 데이터형을 클래스의 이름으로 명시해야 하는데, 이를 '제너릭스'라 한다.
🔎 제너릭스에 명시할 수 있는 데이터형은 반드시 클래스 이름이어야하기 때문에 기본 자료형을 보관할 경우 Wrapper 클래스의 이름을 사용해야 한다.
🔎 기존에 저장된 데이터와 중복되는 이름이 저장될 경우, 기존에 저장된 데이터를 덮어 씌우게 된다
( 재생성은 불가능 / 수정은 가능 )
-> 다음과 같이 <영>이라는 값이 80으로 할당되었지만, 후에 70으로 재할당이 되어서 출력값이 수정되었다.
<array(배열)과 가장 큰 차이> HashMap은 순서가 상관이 없음
<array> 'ㅁㅁㅁ' 각 방의 정보를 호출하려면 인덱스
번호를 통함 ( 순서중요o )
<HashMap> 'ㅁㅁㅁ' 각 방의 정보를 호출하려면
이름표를 통함 ( 순서중요x )
Map<String, 저장할 데이터의 클래스 이름> data = new HashoMap<String, 저장할 데 이터의 클래스이름>();
🔎 무제한 확장 가능한 배열
🔎 ArrayList는 List 인터페이스를 상속받는 클래스로, 데이터를 이름표 없이 무제한으로 보관할 수 있다.
🔎 ArrayList에 추가되는 데이터는 순차적으로 배열과 같은 인덱스 번호를 부여 받는다.
🔎 상위 인터페이스 형으로 선언하고 ArrayList클래스로 객체를 할당하며, 선언과 할당시에는 보관하고자 하는 자료형에 대한 제너릭스를 명시한다.
List<저장할 데이터의 클래스 이름> list = new ArrayList<저장할 데이터의 클래스 이름>();
-> 배열처럼 각 인덱스에 int값이 할당되었다고 하면, 객체를 생성하여 arraylist의 인덱스에 객체를 할당하여 출력값을 얻을 수도 있다.
예제)
<Member 클래스>
-> 생성자, getter & setter, toString() 호출
<1>
🔎제너릭 <값의 이름, 값의 종류> 객체 생성 🔎데이터의 추가 *.put(K,V) 메서드로 사용 🔎새로운 객체의 추가 String형의 데이터는 물론이고, null값도 입력될 수 있다. 🔎저장된 값을 열기 *.size();메서드 사용 🔎저장된 값을 콘솔창에 꺼내기 *.get(); 메서드 사용
<2>
🔎데이터의 수량 *.size(); 메서드 사용 🔎저장된 값 꺼내기 *.get(); 메서드 사용 🔎저장된 값의 삭제 *.remove(); 메서드 사용 🔎새로운 데이터의 추가 *.add(i, "~~"); 메서드 사용 🔎전체 삭제 *.clear(); 메서드 사용
<3>