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

C# List에서 조건에 일치하는 첫 번째 요소 찾기 - Find() 메서드 활용법

C#에서 List<T> 컬렉션 안에서 지정한 조건을 만족하는 첫 번째 항목을 찾으려면 Find() 메서드를 사용하면 됩니다. 이 메서드는 Predicate<T> 대리자를 인수로 받아, 조건이 참(true)이 되는 첫 번째 요소를 반환합니다.

Find() 메서드란?

List.Find(Predicate<T> match)는 리스트를 처음부터 순차적으로 검색하면서 전달된 조건(술어)과 일치하는 첫 번째 요소를 반환합니다. 조건에 맞는 요소가 없으면 기본값(default)을 반환합니다.

예제 1: 10의 배수 찾기

다음 예제는 리스트에서 10으로 나누어 떨어지는 첫 번째 숫자를 찾는 코드입니다.

using System;
using System.Collections.Generic;

public class Demo {
   private static bool demo(int i) {
      return ((i % 10) == 0);
   }

   public static void Main(String[] args) {
      List<int> list = new List<int>();
      list.Add(200);
      list.Add(215);
      list.Add(310);
      list.Add(500);
      list.Add(600);

      Console.WriteLine("List elements...");
      foreach (int i in list) {
         Console.WriteLine(i);
      }

      Console.WriteLine("First Occurrence = " + list.Find(demo));
   }
}

실행 결과

List elements...
200
215
310
500
600
First Occurrence = 200

리스트의 첫 번째 요소인 200이 이미 10의 배수 조건을 만족하므로, 결과는 200이 출력됩니다.

예제 2: 짝수 찾기

이번에는 리스트에서 처음으로 등장하는 짝수를 찾는 예제입니다.

using System;
using System.Collections.Generic;

public class Demo {
   private static bool demo(int i) {
      return ((i % 2) == 0);
   }

   public static void Main(String[] args) {
      List<int> list = new List<int>();
      list.Add(255);
      list.Add(315);
      list.Add(410);
      list.Add(500);
      list.Add(600);
      list.Add(710);
      list.Add(800);
      list.Add(1000);

      Console.WriteLine("List elements...");
      foreach (int i in list) {
         Console.WriteLine(i);
      }

      Console.WriteLine("First Occurrence = " + list.Find(demo));
   }
}

실행 결과

List elements...
255
315
410
500
600
710
800
1000
First Occurrence = 410

앞의 두 요소인 255와 315는 홀수이므로 조건에 해당하지 않고, 세 번째 요소인 410이 처음으로 짝수 조건을 만족하기 때문에 결과는 410입니다.

정리

  • Find(): 조건에 일치하는 첫 번째 요소 하나만 반환합니다.
  • FindAll(): 조건에 일치하는 모든 요소를 리스트로 반환합니다.
  • FindIndex(): 조건에 일치하는 첫 번째 요소의 인덱스를 반환합니다.

람다 식을 활용하면 별도의 메서드 정의 없이 list.Find(x => x % 10 == 0)처럼 더 간결하게 작성할 수도 있습니다.