728x90
- 컬렉션: 다수의 참조형 데이터를 배열보다 더 쉽고 효과적으로 처리할 수 있는 기능을 많이 가지고 있음
- 컬렉션 종류
- Collection - List, Set, Queue, Map
- List: 순서가 있는 데이터의 집합 (데이터 중복 허용)
- Queue
- Set: 순서가 없는 데이터의 집합 (데이터 중복 허용 안함)
- Map: 순서가 없는 (Key, Value) 쌍으로 이루어진 데이터의 집합 (Key 값 중복 허용 안함)
- List: 순서, 중복 있음
- ArrayList: 배열처럼 일렬로 데이터를 저장하고 조회하여 인덱스로 값을 하나씩 조회 가능
- 배열과 달리 크기가 정해져 있지 않음 (동적 배열)
- 기능
- 선언: ArrayList<타입> 리스트명
- 생성: new ArrayList<타입>();
- 초기화 필요 없음
- 값 추가: 리스트명.add({추가할 값})
- 값 수정: 리스트명.set({수정할 순번}, {수정할 값})
- 값 삭제: 리스트명.remove({삭제할 순번})
- 값 출력: 리스트명.get({출력할 순번})
- 전체 출력: 리스트명.toString() -- 전체 값을 대괄호[]로 묶어서 출력
- 전체 제거: 리스트명.clear()
- LinkedList: 메모리에 남는 공간을 요청해서 여러 곳에 실제 값을 담아놓고 실제값이 있는 주소값으로 목록을 구성하고 저장
- 기본적인 기능은 ArrayList와 동일하지만 조회 속도가 더 느리고, 값 추가/삭제 시에는 더 속도가 빠름
- 기능
- 선언 : LinkedList<Integer> linkedList
- 생성 : new LinkedList<Integer>();
- 초기화가 필요 없음
- 값 추가 : linkedList.add({추가할 값})
- 값 중간에 추가 : linkedList.add({추가할 순번}, {추가할 값})
- 값 수정 : linkedList.set({수정할 순번}, {수정할 값})
- 값 삭제 : linkedList.remove({삭제할 순번})
- 값 출력: linkedList.get({출력할 순번})
- 전체 출력 : linkedList.toString() -- 전체 값을 대괄호[]로 묶어서 출력
- 전체 제거 : linkedList.clear()
- Stack: Last-In-First-out
- 기능
- 선언 : Stack<타입> 스택명
- 생성 : new Stack<타입>();
- 추가 : 스택명.push({추가할 값})
- 조회 : 스택명.peek()
- 꺼내기 : 스택명.pop() -- 꺼내고나면 삭제됨
- 기능
- ArrayList: 배열처럼 일렬로 데이터를 저장하고 조회하여 인덱스로 값을 하나씩 조회 가능
- Queue: Fist-In-First-Out
- Queue는 생성자가 없는 인터페이스라서 생성자가 존재하는 LinkedList를 사용해 생성해야 함
- Queue<Integer> intQueue = new LinkedList<Integer>(); //생성자가 있어야 new로 생성 가능
- Queue가 부모, LinkedList가 자식
- 기능
- 선언 : Queue<타입> 큐명
- 생성 : new LinkedList<타입>();
- 추가 : 큐명.add({추가할 값}) // 맨 위에
- 조회 : 큐명.peek() // 맨 아래값
- 꺼내기 : 큐명.poll() // 맨 아래값 -- 꺼내고나면 삭제됨
- 크기: 큐명. size()
- Queue는 생성자가 없는 인터페이스라서 생성자가 존재하는 LinkedList를 사용해 생성해야 함
- Set: 순서, 중복 없음
- Set는 생성자가 없는 인터페이스라서 생성자가 존재하는 HashSet를 사용해 생성해야 함
- 선언 : Set<타입> 세트명
- 생성 : new HashSet<타입>();
- 추가 : 세트명.add({추가할 값})
- 조회 : Iterator 사용
- 삭제 : 세트명.remove({삭제할 값})
- 포함확인 : 세트명.contains({포함확인 할 값}) -- 해당값이 포함되어있는지 boolean 값 리턴
- Set의 응용
- HashSet: 가장 빠르고 순서를 예측 불가능
- TreeSet: 정렬된 순서대로 보관하며 정렬 방법 지정 가능
- LinkedHashSet: 추가된 순서, 또는 최근에 접근한 순서대로 접근 가능
- Set는 생성자가 없는 인터페이스라서 생성자가 존재하는 HashSet를 사용해 생성해야 함
- 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의 응용
- HashMap: 중복 허용 안함, 순서 보장 안함. 키와 값으로 null이 허용
- 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 |