본문 바로가기
[스파르타코딩클럽]/Java 문법 종합반

Chapter 6. 컬렉션

by 진진리 2023. 10. 13.
728x90
  • 컬렉션: 다수의 참조형 데이터를 배열보다 더 쉽고 효과적으로 처리할 수 있는 기능을 많이 가지고 있음
  • 컬렉션 종류
    • Collection - List, Set, Queue, Map
    • List: 순서가 있는 데이터의 집합 (데이터 중복 허용)
    • Queue
    • Set: 순서가 없는 데이터의 집합 (데이터 중복 허용 안함)
    • Map: 순서가 없는 (Key, Value) 쌍으로 이루어진 데이터의 집합 (Key 값 중복 허용 안함)

 

  • List: 순서, 중복 있음
    1. ArrayList: 배열처럼 일렬로 데이터를 저장하고 조회하여 인덱스로 값을 하나씩 조회 가능
      • 배열과 달리 크기가 정해져 있지 않음 (동적 배열)
      • 기능
        • 선언: ArrayList<타입> 리스트명
        • 생성: new ArrayList<타입>();
        • 초기화 필요 없음
        • 값 추가: 리스트명.add({추가할 값})
        • 값 수정: 리스트명.set({수정할 순번}, {수정할 값})
        • 값 삭제: 리스트명.remove({삭제할 순번})
        • 값 출력: 리스트명.get({출력할 순번})
        • 전체 출력: 리스트명.toString()   -- 전체 값을 대괄호[]로 묶어서 출력
        • 전체 제거: 리스트명.clear()
    2. LinkedList: 메모리에 남는 공간을 요청해서 여러 곳에 실제 값을 담아놓고 실제값이 있는 주소값으로 목록을 구성하고 저장
      • 기본적인 기능은 ArrayList와 동일하지만 조회 속도가 더 느리고, 값 추가/삭제 시에는 더 속도가 빠름
      •  기능
        • 선언 : LinkedList<Integer> linkedList
        • 생성 : new LinkedList<Integer>();
        • 초기화가 필요 없음
        • 값 추가 : linkedList.add({추가할 값})
        • 값 중간에 추가 : linkedList.add({추가할 순번}, {추가할 값})
        • 값 수정 : linkedList.set({수정할 순번}, {수정할 값}) 
        • 값 삭제 : linkedList.remove({삭제할 순번}) 
        • 값 출력: linkedList.get({출력할 순번})
        • 전체 출력 : linkedList.toString()  --  전체 값을 대괄호[]로 묶어서 출력
        • 전체 제거 : linkedList.clear()
    3. Stack: Last-In-First-out
      • 기능
        • 선언 : Stack<타입> 스택명
        • 생성 : new Stack<타입>();
        • 추가 : 스택명.push({추가할 값})
        • 조회 : 스택명.peek() 
        • 꺼내기 : 스택명.pop()  --  꺼내고나면 삭제됨

 

  • Queue: Fist-In-First-Out
    • Queue는 생성자가 없는 인터페이스라서 생성자가 존재하는 LinkedList를 사용해 생성해야 함
      • Queue<Integer> intQueue = new LinkedList<Integer>();  //생성자가 있어야 new로 생성 가능
      • Queue가 부모, LinkedList가 자식
      • 기능
        • 선언 : Queue<타입> 큐명
        • 생성 : new LinkedList<타입>();
        • 추가 : 큐명.add({추가할 값})  // 맨 위에
        • 조회 : 큐명.peek()  // 맨 아래값
        • 꺼내기 : 큐명.poll()  // 맨 아래값 --  꺼내고나면 삭제됨
        • 크기: 큐명. size()
  • Set: 순서, 중복 없음
    • Set는 생성자가 없는 인터페이스라서 생성자가 존재하는 HashSet를 사용해 생성해야 함
      • 선언 : Set<타입> 세트명
      • 생성 : new HashSet<타입>();
      • 추가 : 세트명.add({추가할 값})
      • 조회 : Iterator 사용
      • 삭제 : 세트명.remove({삭제할 값}) 
      • 포함확인 : 세트명.contains({포함확인 할 값})  --  해당값이 포함되어있는지 boolean 값 리턴
    • Set의 응용
      1. HashSet: 가장 빠르고 순서를 예측 불가능
      2. TreeSet: 정렬된 순서대로 보관하며 정렬 방법 지정 가능
      3. LinkedHashSet: 추가된 순서, 또는 최근에 접근한 순서대로 접근 가능
  • Map: key-value 구조
    • key 값을 기준으로 value를 조회 가능
    • 기능
      • 선언 : Map<Key타입, Value타입> 맵이름
      • 생성 : new HashMap<>();
      • 추가 : 맵명.put({추가할 Key값},{추가할 Value값})   // Key에 Value값을 추가
      • 조회 : 맵명.get({조회할 Key값})   // Value값 조회
      • 전체 key 조회 : 맵명.keySet()
      • 전체 value 조회 : 맵명.values()
      • 삭제 : 맵명.remove({삭제할 Key값})   // Value값 삭제
    • Map의 응용
      1. HashMap: 중복 허용 안함, 순서 보장 안함. 키와 값으로 null이 허용
      2. TreeMap: key값 기준으로 정렬 가능. 저장시 오름차순 정렬을 해서 저장시간이 오래걸림

 

'[스파르타코딩클럽] > Java 문법 종합반' 카테고리의 다른 글

Chapter 8. 상속  (0) 2023.10.16
Chapter 7. 클래스  (0) 2023.10.16
Chapter 5. 배열  (0) 2023.10.13
Chapter 4. 조건문, 반복문  (0) 2023.10.13
Chapter 3. 연산자  (0) 2023.10.13