Java 컬렉션 프레임워크에 대한 이해

박현우·2024년 1월 9일

1. 컬렉션 프레임워크
1-1. Collection Framework란

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

1-2. Collection Framework의 종류

1-3. HashMap 클래스

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

-> 기존에 저자된 데이터와 중복되는 이름이 저장되 경우, 기존에 저장된 데이터를 덮어 씌우게 된다.

1-4. ArrayList

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

  • ArrayList에 추가되는 데이터는 순차적으로 배열과 같은 인덱스 번호를 부여받는다.

  • 상위 인터페이스형으로 선언하고 ArrayList 클래스로 객체를 할당하며, 선언과 할당 시에는 보관하고자 하는 자료형에 대한 제너릭스를 명시한다.

    	List<저장할 데이터의 클래스 이름> list
    		= new ArrayList<저장할 데이터의 클래스 이름>();
      
      
      public static void main(String[] args) {
    		// 데이터를 저장할 배열 생성
    		// 제너릭스 -> <값의 이름, 값의 종류>
    		Map<String, Integer> hm
    			= new HashMap<String, Integer>();
    	
    		// 데이터의 추가는 put 메서드 사용
    		// -> 중복을 허용하지 않는다.
    		hm.put("국어", 100);
    		hm.put("영어", 98);
    		hm.put("수학", 50);
    	
    		// 저장된 갯수 얻기
    		System.out.println("HashMap size : " + hm.size());
    	
    		//객체를 넣는 것이므로 null 사용 가능
    		hm.put("수학", null); 
    		System.out.println("HashMap size : " + hm.size());
    	
    		hm.put("수학", 90);
    		System.out.println("HashMap size : " + hm.size());
    	
    		hm.put("컴공", 98);
    		System.out.println("HashMap size : " + hm.size());
    	
    		// 데이터 꺼내기
    		System.out.println(hm.get("국어"));
    		System.out.println(hm.get("영어"));
    		System.out.println(hm.get("수학"));
    		System.out.println(hm.get("컴공"));
    	
    	
    	
    		}
      
      public static void main(String[] args) {
    		// 객체를 생성시 제너릭스의 사용
    		// -> 클래스 이름은 오른쪽에 <자료형>의 형식으로 표현한다.
    		// 이때 자료형에는 클래스타입만 가능하다.
    		// 기본 데이터형을 사용하고자 하는 경우에는
    		// 해당 데이터형의 Wrapper Class를 사용해야 한다.
    		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);
    	
    	}

0개의 댓글