컬렉션 프레임워크

9mond·2023년 7월 14일
0
post-thumbnail
post-custom-banner

1. Collection Framework란

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

2. Collection Framework 종류

3. HashMap 클래스

  • 데이터에 이름표를 적용하여 저장하기
  • HashMap 클래스는 Map 인터페이스를 상속받는 '자료 보관소'이기 때문에,
    암묵적으로 객체 형변환의 규칙에 따라 Map 형태로 선언하고 HashMap 형태로 할당한다.
  • 선언과 할당 시에 HashMap의 이름표로 사용할 데이터 형과 HashMap에 저장할 데이터형을 클래스의 이름으로 명시해야 하는데,
    이를 '제너릭스(<>)'라 한다.
  • 제너릭스에 명시할 수 있는 데이터 형은 반드시 클래스 이름이여야 하기 때문에
    기본 자료형을 보관할 경우 wrapper클래스의 이름을 사용해야 한다. wrapper 클래스에 대응하는 Integer
	Map<String, 저장할 데이터의 클래스 이름> data = new HashMap<String, 저장할 데이터의 클래스 이름>();
  • 기존의 저장된 데이터와 중복되는 이름이 저장될 경우, 기존에 저장된 데이터를 덮어 씌우게 된다.
 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", 95);
		hm.put("math", 98);
		hm.put("eng", 30);
		hm.put("com", null); // 객체에 넣는 것이므로 Null 사용 가능

		// 저장된 갯수 얻기
		System.out.println("HashMap size : " + hm.size()); // length가 아님

		// 데이터 꺼내기
		System.out.println(hm.get("kor"));
		System.out.println(hm.get("math"));
		System.out.println(hm.get("eng"));
		System.out.println(hm.get("com"));

		hm.put("com", 90);
		hm.put("eng", 85);

		// 저장된 갯수 얻기
		System.out.println("HashMap size : " + hm.size()); // length가 아님

		// 데이터 꺼내기
		System.out.println(hm.get("kor"));
		System.out.println(hm.get("math"));
		System.out.println(hm.get("eng"));
		System.out.println(hm.get("com"));
	}
}

4. ArrayList의 사용

  • ArrayList는 List 인터페이스를 상속받는 클래스로, 데이터를 이름표 없이 무제한으로 보관할 수 있다.
  • ArrayList에 추가되는 데이터는 순차적으로 배열과 같은 인덱스 번호를 부여 받는다.
  • 상위 인터페이스 형으로 선언하고 ArrayList 클래스로 객체를 할당하며, 선언과 할당 시에는 보관하는 자료형에 대한 제너릭스를 명시한다.
 // 숫자값 넣고 싶으면 Integer 선언
	List<저장할 데이터의 클래스이름>list = new ArrayList<저장할 데이터의 클래스이름>();

// 주소로 데이터를 표현하기 위한 java Beans
public class People {
	private String name;
	private String phoneNo;

	public People(String name, String phoneNo) {
		super();
		this.name = name;
		this.phoneNo = 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;
	}

	@Override
	public String toString() {
		return "People [name=" + name + ", phoneNo=" + phoneNo + "]";
	}
}


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

public class Main03 {

	public static void main(String[] args) {
		// People 객체를 담기 위한 ArrayList 객체 생성
		List<People> plist = new ArrayList<People>();

//		// 10명의 데이터를 임의로 추가
//		plist.add(new People("회원1", "010-1234-5670"));
//		plist.add(new People("회원1", "010-1234-5671"));
//		plist.add(new People("회원2", "010-1234-5672"));
//		plist.add(new People("회원3", "010-1234-5673"));
//		plist.add(new People("회원4", "010-1234-5674"));
//		plist.add(new People("회원5", "010-1234-5675"));

		for (int i = 0; i < 10; i++) {
			People p = new People("회원" + i, "010-1234-567" + i);
			plist.add(p);
		}

		// 출력
//		People item0 = plist.get(0);
//		People item1 = plist.get(1);
//		People item2 = plist.get(2);
//		People item3 = plist.get(3);

		for (int i = 0; i < plist.size(); i++) {
			People item = plist.get(i);
			System.out.println(item.toString());
		}
	}
}
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);
	}
}
profile
개발자
post-custom-banner

0개의 댓글