티스토리 뷰

======================================================

안녕하세요 Doridori 입니다. 


이번 강의는 ArrayList와 List에 대한 강의 입니다. 


원래는 이번 강의에 HashTable과 Dictionary 까지 함께 다루려고 했는데 내용이 섞이기도 하고 분량이 많아져서 두 강의로 나누게 되었습니다. 


비슷한 내용으로 이어서 진행 할 예정이기 때문에 내용을 정리하는 참고 부분도 함께 첨부하였습니다. ^^;;

======================================================


자료구조 2 (ArrayList, List)


Source UI) Study_21_ArrayList_List(UI).zip

Soruce 전체) Study_21_ArrayList_List.zip

교재) 21강 자료구조 2 (ArrayList, List).pdf





이번강의는 ArrayList와 List에 대한 강의로 정하였지만 실제로는 List에 대한 내용을 주로 다루고 있습니다. 


ArrayList와 List의 경우 자료 구조로는 거의 차이가 없고 선언하는 형식이 차이가 나는데 개인적으로 제가 처음에 개발공부를 할때는 ArrayList를 많이 썼는데 실무를 하다 보니 프로그램의 안정성이 더 중요해져서 (이건 제가 장비 제어 쪽에 있어서 그럴수도 있습니다.) List를 주로 사용하고 있습니다. 


그래서 List 위주의 예제가 되었네요 ^^;;


둘다 예전 7강에 진행 했던 Array에서 발전된 형태라고 보시면 될것 같고, 사용하는데 크게 어려움은 없다고 보시면 될것 같습니다. 



추가로 이번강의에는 특이하게 참고 자료를 하나 더 넣었는데 이유가 ArrayList와 List의 차이점이 Data Type을 선언한다는 점인데 


HashTable과 Dictionary의 경우도 동일하게 같은 자료구조 형태를 띄고 있지만 Data Type을 선언한다는 차이가 있어서 구분하는 Page를 하나 더 만들게 되었습니다. 

(다음강의와 이어지는 내용이기 때문에 함께 참고 하시면 도움이 될것 같습니다.)


이번 강의의 예제는 뭘 할까 고민하다가 길거리에서 보통 하는 인기 투표를 예제로 만들어 보았습니다. 


기존에 PictureBox예제를 만들면서 카드를 선택하는 예제를 만든적이 있는데 (11강 구조체와 클래스) 비슷한 내용이지만 이번에는 List에 선택된 Data들을 저장해 두었다가 한번에 화면에 보여주는 형태로 구현 하였습니다. 

(이럴 경우 자료의 통계를 낸다거나 하는 형태로 가공하는데 많은 이점이 있습니다.)


다음 강의의 경우 거의 동일 하게 구현해서 반장선거 예제를 만들어 볼생각입니다. 

(예제 하나로 두번 울궈 먹는 느낌이긴하지만 쉬어간다고 생각 해주시면 감사 하겠습니다. ^^ )




강의)


이번강의가 살짝 늦었는데 요즘 회사 일이 바쁜이유도 있지만 지난강의에 자료구조 형태를 구현한게 마음에들어서 비슷한 형태로 한번더 만들어 보려고 하다가 (FlowLayOutPanel에 Control을 Source에서 추가하는 형태로 만들었습니다.) 예제가 조금 어려워지고 시간만 많이 먹는 느낌을 받아서 다 갈아엎고 새로 만드느라 늦었습니다. (ㅠ.ㅠ)

이번 강의를 보시고 도움이 된다는 느낌을 받으셨으면 좋겠습니다. ^^;;




Source)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace _21_List
{
    public partial class Form1 : Form
    {
        List<string> _strList = new List<string>();  // List의 경우 Type을 선언 하고 사용
        
        ArrayList _arList = new ArrayList();
 
        public Form1()
        {
            InitializeComponent();
 
            dgViewList.Columns.Add("dgValue""Value");  // Column 추가
        }
 
        private void pbox_Click(object sender, EventArgs e)
        {
            PictureBox pbox = sender as PictureBox;
 
            string strSelectText = string.Empty;
 
            switch (pbox.Name)
            {
                case "pbox1":
                    strSelectText = "cake";
                    break;
                case "pbox2":
                    strSelectText = "burger";
                    break;
                case "pbox3":
                    strSelectText = "pizza";
                    break;
                case "pbox4":
                    strSelectText = "ice";
                    break;
            }
 
            _strList.Add(strSelectText);
 
            //_arList.Add(strSelectText);
            //_arList.Add(1);
 
            fUIDisplay();
 
            fDataGridViewDisplay();
        }
        
        private void fUIDisplay()
        {
            int iCake = 0;
            int iBurger = 0;
            int iPizza = 0;
            int iIce = 0;
 
            foreach (string oitem in _strList)
            {
                switch (oitem)
                {
                    case "cake":
                        iCake++;
                        break;
                    case "burger":
                        iBurger++;
                        break;
                    case "pizza":
                        iPizza++;
                        break;
                    case "ice":
                        iIce++;
                        break;
                }
            }
 
            lblPick1.Text = iCake.ToString();
            lblPick2.Text = iBurger.ToString();
            lblPick3.Text = iPizza.ToString();
            lblPick4.Text = iIce.ToString();
 
            lblTotalCount.Text = _strList.Count.ToString();
        }
 
 
        private void fDataGridViewDisplay()
        {
            //dgViewList.DataSource = _strList.Select(x => new { Value = x }).ToList();
 
            dgViewList.Rows.Clear();
 
            foreach (string oitem in _strList)
            {
                dgViewList.Rows.Add(oitem);
            }
 
            foreach (DataGridViewRow oRow in dgViewList.Rows)
            {
                oRow.HeaderCell.Value = oRow.Index.ToString();
            }
 
            dgViewList.AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders);
        }
 
    }
}
 
cs



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함