프로그램/C# - Study / / 2010. 9. 24. 10:16

11D - ArrayList, Hashtable, ICollection, TheGeneric

반응형


클래스

Public 클래스 ArrayList 크기가 필요에 따라 동적으로 증가되는 배열을 사용하여 IList 인터페이스를 구현합니다.
Hashtable 키의 해시 코드에 따라 구성되는 키/값 쌍의 컬렉션을 나타냅니다.

인터페이스
ICollection 제네릭이 아닌 모든 컬렉션의 크기, 열거자 및 동기화 메서드를 정의합니다.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections; //추가

namespace Ex21Collection
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
       
        //ArrayList
        private void button1_Click(object sender, EventArgs e)
        {           
            textBox1.Clear();               

            // ArrayList 가변 배열 ,  동적으로 크기 변경 가능
            // 다양한 자료형의 데이터 처리 가능
            ArrayList list = new ArrayList();    // System.Collections; 추가 ctr + .
            list.Add(10);
            list.Add("문자열 데이터");
            list.Add("삭제될 데이터");
            list.Add(11.11);
            list.Add(DateTime.Now);
            list.Insert(1, "추가된 데이터"); // 삽입
            for (int i = 0; i < list.Count; i++)
            {
                textBox1.AppendText(list[i] + "\r\n");
            }

            textBox1.AppendText("=============================\r\n");
            list.Remove(list[3]);  // 대상 삭제
            list.RemoveAt(list.Count - 1); // 마지막 요소 삭제 , 위치 삭제
           
            for (int i = 0; i < list.Count; i++)
            {
                textBox1.AppendText(list[i] + "\r\n");
            }

            textBox1.AppendText("=============================\r\n");

            textBox1.AppendText(list.IndexOf(11.11).ToString() + "\r\n"); // 검색 기능

        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Clear();

            Hashtable ht = new Hashtable();
            ht.Add(1, "첫번째 데이터");
            ht.Add(2, "두번째 데이터");
            ht.Add(3, "세번째 데이터");
            ht.Add(4, "네번째 데이터");
            ht.Add(5, "다섯번째 데이터");
           
            for (int i = 0; i < ht.Count; i++)
            {
                textBox1.AppendText(ht[i+1] + " \r\n"); // AppendText 위치 값으로 뽑는다(출력)
            }

            ht.Remove(3);
            textBox1.AppendText("=============================\r\n");

            ICollection keys = ht.Keys;
            foreach (object key in keys)
            {
                textBox1.AppendText(ht[key] + "\r\n");
            }
                                  
        }

        //Generic
        private void button3_Click(object sender, EventArgs e)
        {
            TheObject obj = new TheObject();
            obj.Data = 10; // boxing: (int -> object)
            int data = (int)obj.Data; // unboxing : (object ->int), 형변환
            textBox1.AppendText(data.ToString() + "\r\n");

            textBox1.AppendText("=============================\r\n");

            // 타입을  <인트, 스트링>으로 하겠다
            TheGeneric<int, string> obj2 = new TheGeneric<int, string>();
            obj2.Method(10, "테스트 문자열");
            textBox1.AppendText(obj2.Data + " / " + obj2.Data2 + "\r\n");
        }

        private void button4_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
           
            List<int> list = new List<int>();
            list.Add(10);
            list.Add(20);
            list.Add(30);
            list.Add(40);
            list.Insert(2, 50);

            foreach (int data in list)
            {
                textBox1.AppendText(data + "\r\n");
            }

            textBox1.AppendText("=============================\r\n");

            Dictionary<int, string> dictionary = new Dictionary<int, string>();
            dictionary.Add(1, "첫번째 문자열");
            dictionary.Add(5, "두번째 문자열");
            dictionary.Add(8, "세번째 문자열");
            dictionary.Add(14, "네번째 문자열");
            dictionary.Add(17, "다섯번째 문자열");

            //foreach (int key in dictionary.Keys)
            //{
            //    textBox1.AppendText(dictionary[key] + "\r\n");
            //}

            //IEnumerator enumerator = dictionary.Keys.GetEnumerator();
            //Dictionary<int, string>.KeyCollection.Enumerator enumerator =
            //    dictionary.Keys.GetEnumerator(); // 형변환이 필요 없다
            IEnumerator<int> enumerator =
                dictionary.Keys.GetEnumerator();
            while (enumerator.MoveNext())
            {
                //int key = (int)enumerator.Current;
                int key = enumerator.Current;
                textBox1.AppendText(dictionary[key] + "\r\n");
            }
            enumerator.Reset();
           
        }
    }
}

class TheObject
{
    public object Data;
}
class TheGeneric<T, E>  // <T, E> 자료형의 대한 예명
{
    public T Data;
    public E Data2;

    public void Method(T data, E data2)
    {
        this.Data = Data;
        this.Data2 = Data2;
    }
}


/************
  *
  * {
  *     int x;
  *     Method(x);
  * }
  *
  * Method(object x)
  * {
  *     int y = (int) x * 10;
  * }
  *
  *
  ***************/

반응형

'프로그램 > C# - Study' 카테고리의 다른 글

C# - Ex23IO - 파일입출력( XmlSerializer, SoapFormatter, Serialization )  (0) 2010.10.13
11D - 예외처리(Exception)  (0) 2010.09.24
10D - 윈폼  (0) 2010.09.17
10D - Ex19WindowsForms3  (0) 2010.09.17
10D - Ex18WindowsForms2  (0) 2010.09.17
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유