Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# ArrayList에 특정 요소가 포함되어 있는지 확인하는 방법

C#의 ArrayList는 요소의 추가와 삭제에 따라 크기가 자동으로 늘어나거나 줄어드는 동적 컬렉션입니다. ArrayList에 특정 요소가 포함되어 있는지 확인하려면 Contains() 메서드를 사용하면 됩니다.

Contains() 메서드는 지정한 요소가 목록에 존재하면 true, 존재하지 않으면 false를 반환합니다. 내부적으로는 처음부터 끝까지 순차적으로 검색(선형 검색)을 수행하며, 요소 비교에는 Object.Equals 메서드가 활용됩니다.

그럼 실제 예제 코드를 통해 살펴보겠습니다.

예제 1: 문자열 요소 확인하기

using System;
using System.Collections;
public class Demo {
    public static void Main(){
        ArrayList list = new ArrayList();
        list.Add("One");
        list.Add("Two");
        list.Add("Three");
        list.Add("Four");
        list.Add("Five");
        list.Add("Six");
        list.Add("Seven");
        list.Add("Eight");
        Console.WriteLine("ArrayList elements...");
        foreach(string str in list){
            Console.WriteLine(str);
        }
        Console.WriteLine("ArrayList is read-only? = "+list.IsReadOnly);
        Console.WriteLine("Does the element Six in the ArrayList? = "+list.Contains("Six"));
    }
}

출력 결과

ArrayList elements...
One
Two
Three
Four
Five
Six
Seven
Eight
ArrayList is read-only? = False
Does the element Six in the ArrayList? = True

위 코드에서는 8개의 문자열 요소를 가진 ArrayList를 만든 뒤, Contains("Six")를 호출하여 "Six"라는 요소가 목록에 존재하는지 확인했습니다. 결과가 True로 출력되었으므로 해당 요소가 목록에 있다는 것을 알 수 있습니다. 또한 IsReadOnly 속성을 통해 이 ArrayList가 읽기 전용이 아님(False)도 함께 확인했습니다.

예제 2: 숫자 요소 확인하기

using System;
using System.Collections;
public class Demo {
    public static void Main(){
        ArrayList arrList = new ArrayList();
        arrList.Add(100);
        arrList.Add(200);
        arrList.Add(300);
        arrList.Add(400);
        arrList.Add(500);
        Console.WriteLine("Display elements in a range...");
        IEnumerator demoEnum = arrList.GetEnumerator(1, 3);
        while (demoEnum.MoveNext()) {
            Object ob = demoEnum.Current;
            Console.WriteLine(ob);
        }
        Console.WriteLine("Does the element 1000 in the ArrayList? = "+arrList.Contains(1000));
    }
}

출력 결과

Display elements in a range...
200
300
400
Does the element 1000 in the ArrayList? = False

두 번째 예제에서는 정수 5개를 저장한 ArrayList를 생성하고, GetEnumerator(1, 3)을 사용해 인덱스 1부터 3개의 요소(200, 300, 400)만 범위로 지정하여 출력했습니다. 이후 Contains(1000)을 호출했는데, 목록에 1000이라는 요소가 없기 때문에 결과가 False로 반환된 것을 확인할 수 있습니다.


참고: 최신 C#에서는 List<T> 사용 권장

참고로 최신 C# 개발 환경에서는 타입 안정성이 보장되는 제네릭 컬렉션인 List<T> 사용이 권장됩니다. List<T> 역시 동일하게 Contains() 메서드를 제공하므로, 위에서 소개한 것과 같은 방식으로 요소 포함 여부를 간편하게 확인할 수 있으며 박싱(boxing) 오버헤드 없이 더 나은 성능을 얻을 수 있습니다.