DAY10(2) - 컬렉션 프레임워크 (Collection Framework)

은나현·2023년 2월 3일
0

📌 1. 컬렉션 프레임워크

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

📍 1-1. Collection Framework의 종류

  • 총 3종류의 인터페이스가 있으며, List, Set, Map 아래에 각각의 인터페이스를 구현하는 하위 클래스들이 속한다.
  • 인터페이스순서(index) 여부데이터 중복 허용구현 클래스
    ListOOArrayList, LinkedList, Stack, Vector 등
    SetXXHashSet, TreeSet 등
    MapX키 중복 허용 X
    값 중복 허용 O
    HashMap, TreeMap, Hashtable 등
  • List는 순서대로 값이 추가되는 리스트형으로 각 정보는 고유 index를 갖는다.
  • Set는 순서가 없고 중복이 허용되지 않는 집합형이다.
  • Map은 키와 값이 한 쌍을 이루며 키 값은 중복이 허용되지 않는다. 순서 index는 갖지 않으며 키 값으로 조회한다.

📌 2. HashMap 클래스

📍 2-1. HashMap 클래스의 선언과 할당

  • HashMap 클래스는 Map인터페이스를 상속받는 자료 보관소다.
    암묵적 형변환의 규칙에 따라 Map형태로 선언하고 HashMap 형태로 할당한다.

    • 데이터에 이름표를 적용하여 저장하는 키-값 쌍을 가지며, 선언과 할당 시에 이름표로 사용할 데이터형(String)과 저장할 데이터형을 클래스의 이름으로 명시해야 하는데, 이를 제너릭스라 한다.
    • 제너릭스에 명시할 수 있는 데이터형은 반드시 클래스 이름이어야 하기 때문에 기본 자료형을 보관할 경우에는 Wrapper 클래스의 이름을 사용해야 한다.
    	Map < String, 저장할 데이터의 클래스 이름 > data
    		= new HashMap < String, 저장할 데이터의 클래스 이름 > ();
  • Map에서는 키 값의 중복을 허용하지 않으므로 기존에 저장된 데이터와 중복되는 키 값이 저장될 경우, 데이터를 덮어씌우게 된다.

📍 2-2. HashMap 사용

  • put(K key, V value)

    • 제너릭스에 명시한 데이터형과 일치하는 두 변수값을 순서대로 입력하면 각각 키 값, 데이터 값에 할당되어 데이터가 생성된다.
    		Map<String, Integer> hm = new HashMap<String, Integer>();
    		hm.put("kor", 90);
            ------------------------------
           // hm에 "kor"이라는 이름을 가진 값 90이 담긴다.
  • get(Object key)

    • 키 값을 통해 해당 키 값을 가진 데이터를 꺼낸다.
    		System.out.println( hm.get("kor"));
            ------------------------------
           // 출력결과
           90
  • size()

    • 현재 담겨 있는 데이터 수를 가져온다.
    		hm.put("math", 100);
    		hm.put("eng", 95);
            System.out.println(hm.size());
            ------------------------------
           // 출력결과 - 데이터 2개를 더 추가하고 총 데이터 수를 가져온 결과
           3

📌 3. ArrayList 클래스

📍 3-1. ArrayList 클래스의 선언과 할당

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

📍 3-2. ArrayList 사용

  • add(E e)
    • 제너릭스에 명시한 자료형 데이터를 새롭게 ArrayList에 추가한다.
    		List<Integer> numberList = new ArrayList<>();
    		numberList.add(10);
            ------------------------------
           // numberList에 10이라는 값을 추가한다. 
     		// 처음으로 추가한 값이므로 0의 인덱스 값을 갖는다.
    • 따로 정의한 클래스를 새롭게 생성해서 할당할 수 있다.
    		List<Member> pList = new ArrayList<>();
     		pList.add(new Member("회원0","01012345670"));
            ------------------------------
           // 회원 이름과 전화번호를 멤버 변수로 갖는 Member 클래스 객체를 생성하여 저장한다. 
  • get(int Index)
    • 인덱스 값을 사용하여 해당 인덱스에 저장된 값을 꺼내온다.
    		Member item = pList.get(0);
    		System.out.println(item.toString());
            ------------------------------
           // 인덱스 0에 저장된 값을 가져와 출력한다. 
      		Member [name = 회원0, phoneNo = 010-1234-5670]
  • size()
    • HashMap과 동일하게 저장된 데이터의 수를 가져온다.
  • remove(int Index)
    • 해당 인덱스에 저장된 값을 삭제한다.
      • 중간에 저장된 값이 삭제되면 이어지는 인덱스에 담긴 값들이 삭제된 데이터 개수만큼 앞으로 이동하여 저장된다.
        ex ) 10개의 값이 담겨 있던 list에서 5번째 인덱스에 저장되어 있던 값이 삭제되면 6번째 인덱스에 있던 값이 5번에 담긴다.
  • clear()
    • 담긴 데이터를 전부 삭제한다.

0개의 댓글