컬렉션 프레임워크(Collection Framework

치로·2024년 7월 25일

1. Collection Framework란

: 다수의 데이터를 쉽게 처리할 수 있는 표준화된 방법을 제공하는 클래스들로, 기존 배열 형태의 자료 저장에서 더 다양한 데이터들을 저장하기 위한 필수 클래스

2. Collection Framework 종류

3. HashMap 클래스

  • 데이터에 이름표를 적용하여 저장하기
  • HashMap 클래스는 Map 인터페이스를 상속받는 '자료 보관소'이기 때문에,
    암묵적 객체 형변환의 규칙에 따라 Map 형태로 선언하고 HashMap 형태로 할당
  • 선언과 할당 시에 HashMap의 이름표로 사용할 데이터형(String)과 HashMap에 저장할 데이터형을 클래스의 이름으로 명시해야 하는데, 이를 '제너릭스'라 함
  • 제너릭스에 명시할 수 있는 데이터형은 반드시 클래스 이름이여야 하기 때문에 기본 자료형을 보관할 경우 Wrapper 클래스의 이름을 사용함
    Map<String, 저장할 데이터의 클래스 이름> data = new HashMap<String, 저장할 데이터의 클래스 이름>();
  • 기존에 저장된 데이터와 중복되는 이름이 저장될 경우, 기존에 저장된 데이터를 덮어 씌우게 됨

4. ArrayList

: List 인터페이스를 상속받는 클래스로, 데이터를 이름표 없이 무제한으로 보관할 수 있음

  • ArrayList에 추가되는 데이터는 순차적으로 배열과 같은 인덱스 번호를 부여 받음
  • 상위 인터페이스 형으로 선언하고 ArrayList클래스로 객체를 할당하며, 선언과 할당 시에는 보관하고자 하는 자료에 대한 제너릭스를 명시
    List<저장할 데이터의 클래스 이름> list = new ArrayList<저장할 데이터의 클래스 이름>();
package collection;

import java.util.ArrayList;
import java.util.List;

public class Main02 {

	public static void main(String[] args) {
		// 객체 생성 시 제너릭스의 사용 -> 클래스 이름 오른쪽에 <자료형>의 형식으로 표현
		// 이 때 자료형에는 클래스 타입만 가능
		// 기본 데이터형을 사용하고자 하는 경우에는 해당 데이터형의 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("데이터의 크기 : "+count);
		
		//5번째 요소의 값 얻기
		int value = numberList.get(4);
		System.out.println("5번째 요소의 값 : "+value);
		
		//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);
	}

}  
package collection;

public class people {
	private String namje;
	private String phoneNo;
	
	//파라미터가 있는 생성자
	public people(String namje, String phoneNo) {
		super();
		this.namje = namje;
		this.phoneNo = phoneNo;
	}


	//getter,setter
	public String getNamje() {
		return namje;
	}

	public void setNamje(String namje) {
		this.namje = namje;
	}

	public String getPhoneNo() {
		return phoneNo;
	}

	public void setPhoneNo(String phoneNo) {
		this.phoneNo = phoneNo;
	}


	@Override
	public String toString() {
		return "people [namje=" + namje + ", phoneNo=" + phoneNo + "]";
	}
	
	
}
package collection;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue;

public class Main03 {

	public static void main(String[] args) {
		// List를 사용하는 가장 일반적인 방법은, 사용자 정의 클래스에 대한 객체를 포함하도록 지정하는 것
		
		// 객체를 담기 위한 ArrayList
		List<people> plist = new ArrayList<people>();
		
		// plist 10명의 데이터를 임의로 추가
		// 회원0, 01012345678
		// ...
		// 회원9, 0102345677
//		plist.add(new people("회원0", "01012345670"));
//		plist.add(new people("회원1", "01012345671"));
//		plist.add(new people("회원2", "01012345672"));
//		plist.add(new people("회원3", "01012345673"));
//		plist.add(new people("회원4", "01012345674"));
//		plist.add(new people("회원5", "01012345675"));
//		plist.add(new people("회원6", "01012345676"));
//		plist.add(new people("회원7", "01012345677"));
//		plist.add(new people("회원8", "01012345678"));
//		plist.add(new people("회원9", "01012345679"));
		for(int i=0; i<10; i++) {
			people p = new people ("회원"+i, "0101234567"+i);
			plist.add(p);
		}
		
		// 출력하기 -> toString()
		for(int i=0; i<plist.size(); i++) {
			// List에 저장된 데이터를 하나 꺼내면, people 클래스 형의 객체가
			people item = plist.get(i);
			System.out.println(item.toString());
		}
	}

}

0개의 댓글