모름

일반화 컬렉션

 

앞서 ArrayList, Queue, Stack, Hashtable 을 배웠습니다. 하지만 이들은 모두 object 형식으로 상속을 받고 있으며 사용시 형변환이 발생하기 때문에 성능 문제가 있었습니다.

 

일반화 컬렉션은 이러한 문제를 해결합니다. 일반화에 기반해서 만들어진 컬렉션이기에 컴파일시 형식이 먼저 결정되고 쓸데없는 형변환이 없습니다. 이러한 컬렉션에는 List<T>, Queue<T>, Stack<T>, Dictionary<Tkey,Tvalue>가 있습니다. 이번 글에선 이들에 대해서 살펴보겠습니다.

 

 

 


 

 

 

List<T>

 

List<T> 는 형식 매게 변수를 입력하여 이 형식 외에는 어떠한 입력도 허용하지 않습니다. 그리고 비교적 많이 쓰이는 컬렉션입니다.

 

class Program {
    static void Main(string[] args) {
        List<int> list = new List<int>();
        for (int i = 0; i < 5; i++) {
            list.Add(i);
        }

        foreach (var item in list) {
            Console.WriteLine(item);
        }

        //출력 0,1,2,3,4
    }
}

 

 

 


 

 

 

Queue<T>

 

Queue<T>도 맞는 상황에 적절하게 사용하면 성능상 좋다고 알고 있습니다. 사용은 비일반화 클래스인 Queue와 똑같습니다.

 

class Program {
    static void Main(string[] args) {
        Queue<int> que = new Queue<int>();
        for (int i = 0; i < 5; i++) {
            que.Enqueue(i);
        }
        foreach (var item in que) {
            Console.WriteLine(item);
        }
        //출력 0 1 2 3 4
    }
}

 

 

 


 

 

 

Stack<T>

 

(말이 점점 짧아지며...)

 

class Program {
    static void Main(string[] args) {
        Stack<int> stack = new Stack<int>();
        for (int i = 0; i < 5; i++) {
            stack.Push(i);
        }
        foreach (var item in stack) {
            Console.WriteLine(item);
        }
        //출력 0 1 2 3 4
    }
}

 

 

 


 

 

 

Dictionary<TKey, TValue>

 

딕셔너리도 자주 사용되는 컬렉션입니다.

 

class Program {
    static void Main(string[] args) {
        Dictionary<string, string> dic = new Dictionary<string, string>();
        dic["하나"] = "one";
        dic["둘"] = "two";
        dic["셋"] = "three";
        dic["넷"] = "four";
        dic["다섯"] = "five";
        Console.WriteLine(dic["하나"]);
        Console.WriteLine(dic["둘"]);
        Console.WriteLine(dic["셋"]);
        Console.WriteLine(dic["넷"]);
        Console.WriteLine(dic["다섯"]);
    }
}

 

그럼 이상으로 자주사용되는 네 가지 일반화 컬렉션을 간단하게 살펴봤습니다.