2021. 4. 6. 22:29ㆍ언어/C#. JAVA
🧵 컬렉션과 일반화 컬렉션
➰ 컬렉션이란?
▫ 같은 성격을 띄는 데이터의 모음을 담는 자료 구조를 말한다.
▫ .NET 프레임워크가 제공하는 자료구조로 ICollection 인터페이스를 상속받는다.
➰ 컬렉션 VS 일반화 컬렉션
🔹 컬렉션
▫ 컬렉션 클래스들은 모두 object형식 기반으로 ArrayList의 Add(), Insert() 메소드의 선언을 보면
object 형식의 매개변수를 받고 있는 것을 확인할 수 있다.
▫ 어떤 형식을 넣더라도 object형식으로 박싱(Boxing)이 되어 입력되고
반대로 ArrayList의 요소에 접근해서 사용할 때는 원래의 데이터 형식으로 언박싱(Unboxing)이 이루어진다.
(형식 변환)
▫ 컬렉션의 요소에 접근할 때마다 형식 변환이 일어나기 때문에 데이터가 많아질수록 성능문제를 일으킨다.
🔸 일반화 컬렉션
▫ 일반화 컬렉션은 object 형식 기반의 컬렉션이 갖고 있던 문제를 해결한다.
▫ 일반화 컬렉션은 일반화에 기반해서 만들어져 있기 때문에 컴파일할 때 컬렉션에서 사용할 형식이 결정되기
때문에 쓸데없는 형식변환을 일으키지 않고 잘못된 형식의 객체를 담게 될 위험도 피할 수 있다.
📖 컬렉션과 일반화 컬렉션 4가지
1. ArrayList 와 List<T>
ArrayList
- 가장 배열과 닮은 컬렉션
- 요소에 접근할 때는 [ ] 연산자를 이용하고, 특정 위치에 있는 요소에 데이터를 임의로 할당 할 수 있다
- 용량을 미리 지정할 필요가 없다
- Method
- Add() : 컬렉션의 가장 마지막에 있는 요소 뒤에 새 요소를 추가
- RemoveAt() : 특정 인덱스에 있는 요소를 제거
- Insert() : 원하는 위치에 새 요소를 삽입
List<T>
- ArrayList와 같은 기능을 하며 사용법도 동일
- List<T> 클래스는 인스턴스를 만들 때 형식 매개 변수를 필요로 하고, 형식 매개 변수로 입력한 형식 외에는 입력을 허용하지 않는다
2. Queue 와 Queue<T>
Queue
- FIFO (First In - First Out)
- 데이터나 작업을 차례대로 입력해뒀다가 입력된 순서대로 하나씩 꺼내 처리하기 위해 사용
- Method
- Enqueue() : Queue 에 데이터 입력
- Dequeue() : 데이터 꺼낼 때
Queue<T>
- Queue와 같은 기능을 하며 사용법도 동일
- Queue<T> 클래스는 형식 매개 변수 필요
3. Stack 과 Stack<T>
Stack
- LIFO (Last In - First Out)
- 먼저 들어온 데이터가 나중에 나가고, 나중에 들어온 데이터는 먼저 나가는 구조의 컬렉션
- Method
- Push() : Stack 데이터를 넣을 때
- Pop() : 데이터를 꺼낼 때
Stack<T>
- Stack와 같은 기능을 하며 사용법도 동일
- Stack<T> 클래스는 형식 매개 변수 필요
4. Hashtable 과 Dictionary<TKey, TValue>
Hashtable
- Key 와 Value의 쌍으로 이루어진 데이터를 다룰 때 사용
- 탐색 속도가 빠르고 사용이 편리
- Hashing : 키를 이용해서 단번에 데이터가 저장되어 있는 컬렉션 내의 주소를 계산한다.
Dictionary<TKey, TValue>
- Hashtable의 일반화 버전
※ 해당 포스팅은「이것이 C#이다(박상현 저)」책 내용을 바탕으로 작성하였습니다.
'언어 > C#. JAVA' 카테고리의 다른 글
[.NET] 직렬화와 역직렬화 (Serialize, Deserialize) (0) | 2021.04.06 |
---|---|
[.NET] IExtenderProvider Interface (feat.ToolTip) (0) | 2021.04.05 |
[JAVA] StringTokenizer 사용법 (0) | 2021.01.05 |
[C# 스터디 - Day1] DBHelper 작성하기 (0) | 2020.12.24 |
[C#] txt 파일에 로그 기록하기 (StreamWriter 메서드) (0) | 2020.12.18 |