같은 성격을 띈 데이터들을 담는 자료구조로, ICollection
인터페이스를 상속받는다.
** 배열 또한 컬렉션의 일종
using System.Collections
로 바로 각 클래스 접근가능.
배열과 가장 닮은 커렉션. []
연산자로 요소 접근 및 수정.
배열과 다른 점
→ 초기 용량 설정 필요없음. 자동적으로 할당크기가 증가/감소함.
ArrayList list = new ArrayList()
bool[] arr = new bool[] { true, true, false, true };
ArrayList list = new ArrayList(arr);
ArrayList list = new ArrayList() { 1, 2, 3 };
public static void Main(string[] args)
{
ArrayList list = new ArrayList();
list.Add(10); // 현재 원소 10
list.Add(20); // 현재 원소 10 20
list.Add(30); // 현재 원소 10 20 30
list.Insert(1, 99); // 현재 원소 10 99 20 30
list.RemoveAt(2); // 현재 원소 10 99 30
for (int i = 0; i < list.Count; i++)
{
Console.Write($"{list[i]} "); // 10 99 30
}
Console.WriteLine();
foreach (int i in list)
{
Console.Write($"{i} "); // 10 99 30
}
Console.WriteLine();
list.Add("aaa");
list.Add(0.5353);
foreach (object o in list)
{
Console.Write($"{o} "); // 10 99 30 aaa 0.5353
}
}
입력은 뒤에서, 출력은 앞에서 이루어지는 자료구조
Queue que = new Queue();
int[] arr = { 1, 2, 3, 4, 5 };
Queue que = new Queue(arr);
static public void Main(string[] Args)
{
Queue que = new Queue();
que.Enqueue(1);
que.Enqueue('a');
que.Enqueue(false);
foreach(object el in que)
{
Console.Write($"{el} "); // 1 a False
}
Console.WriteLine();
Console.WriteLine($"element count : {que.Count}"); // element count : 3
while (que.Count > 0)
{
Console.Write($"{que.Dequeue()} "); // 1 a False
}
Console.WriteLine();
Console.WriteLine($"element count : {que.Count}"); // element count : 0
}
선입후출(FILO) 자료구조
Stack stack = new Stack();
char[] arr = new char[] { 'a', 'b', 'c', 'd' };
Stack stack = new Stack(arr);
public static void Main(string[] args)
{
Stack s = new Stack();
s.Push('a');
s.Push('b');
s.Push(1);
s.Push(0.5353);
s.Push(false);
while (s.Count > 0)
Console.Write($"{s.Pop()} "); // False 0.5353 1 b a
}
key-value 쌍으로 이루어진 데이터의 모음
key를 이용해 value가 있는 주소값을 즉시 계산해내어 데이터에 접근 (배열 접근속도에 준함)
키는 어떤 자료형이라도 사용 가능
Hashtable ht = new Hashtable();
Hashtable ht = new Hashtable()
{
["name"] = "wonjin",
["gender"] = "male",
["age"] = 25
};
Hashtable ht = new Hashtable()
{
{ "name", "wonjin" },
{ "gender", "male" },
{ "age", 25 }
};
static public void Main(string[] Args)
{
Hashtable ht = new Hashtable()
{
{ "name", "wonjin" },
{ "gender", "male" },
{ "age", 25 }
};
ht.Add("major", "computer engineering");
ht["job"] = "student";
Console.WriteLine(ht["name"]); // wonjin
Console.WriteLine();
ICollection keys = ht.Keys;
foreach(string key in keys)
{
Console.WriteLine(ht[key]);
/*
wonjin
25
computer engineering
student
male
*/
}
}