PROGRAMMING WORKSHOP

VB.Net | Collection/ArrayList_1

ArrayList를 일반 배열로 바꿀수 있다

Dim oList As New ArrayList
oList.Add("A")
oList.Add("B")
oList.Add("C")

MsgBox (Join(oList.ToArray,","))

이라고 하면 "A,B,C"라는 문자열을 얻게 되는 것이다
VBA에서의 Join함수를 기억하시는지..
oList개체의 ToArray()메소드로 배열을 만들고 이 배열을
Join함수에서 두번째매개변수 콤마로 구분된 문자열로 만들어 주는 것이다

또 ArrayList에 다른 ArrayList를 합칠수 있다
Dim oList1 As New ArrayList
oList1.Add("A")
oList1.Add("B")
oList1.Add("C")

Dim oList2 As New ArrayList
oList2.Add("D")
oList2.Add("E")
oList1.AddRange(oList2)

라고 하면 oList1에 oList2가 합쳐진다

위의 것은 oList1의 끝에 oList2가 추가 되는 것이고
만약 "B"와 "C"사이에 삽입하고 싶으면
oList1.InsertRange(1,oList2)라고 한다

또 ArrayList에서 몇개의 범위를 한꺼번에 삭제한다

Dim oList1 As New ArrayList
oList1.Add("A")
oList1.Add("B")
oList1.Add("C")

에서
oList1.RemoveRange(1,2)

라고 하면 oList1에는 첫번째 요소하나만 남고 나머지는 삭제된다

또 아래와 같은 ArrayList에서 어떤 요소가 몇번째있는지 찾고 싶다면
Dim oList As New ArrayList
oList.Add("A")
oList.Add("B")
oList.Add("C")
oList.Add("D")
oList.Add("E")
에서 "C"라는 것이 몇번째인지 찾는 다면
Dim iIndex As Integer=oList.LastIndexOf("C")와 같이
LastIndexOf로 찾는다..iIndex값은 2가 될 것이다

엑셀의 Range개체를 생각하면서 보시면..
아하..역시 Range개체는 셀들을 줄줄이 모아놓은 배열, 집합체이로구나!!
라는 것은 새삼느끼면 다른 언어와 비교하는데 편리하다
워크시트함수의 Index함수나 Match함수등을 상상하시면 좋을 것이다
프로그래밍은 정보의 관리와 분석이니..
이런 떼거리정보를 어떻게 하면 잘 관리할까 궁리하면서 생겨나는 것중의
하나가 이런 ArrayList같은 것이고..실은 이것도 별로 많이 사용하지
않고 나중에 설명할 List개체라는 것을 알면 집합체관리의 가장 따끈따끈한
방법이라는 것을 알게 될 것이고 ..그러나 이런 과정을 알고 가는 것이 좋다

또한 습관적으로 단순한 Array배열만 사용할수도 있고, 그냥 VBA에서 사용하던
Collection개체를 그냥 사용하기도 하는 것이니..
좀더 편리한 것들 사용하느냐..아니면 귀찮으니까 손에 익은 것을 사용하느냐의
문제이지만 .Net FrameWork의 다른 개체들과 정보교환이 원활하려면
최근의 방식을 알아야 하는 점도 있다

아래의 그림과 같이 ArrayList개체의 멤버목록과 VBA의 Collection개체의 멤버목록을
비교하면 필요이상의 다양한 속성,메소드를 갖고있다
위의 것은 대표적으로 가장 잘 사용되는 것만 열거하였고
필요에 따라서 찾아서 활용하는 습관을 갖으면 될 것이다