C#의 LinkedList<T> 클래스에는 지정한 값이 포함된 마지막 노드를 검색하는 FindLast() 메서드가 내장되어 있습니다. 리스트에 동일한 값이 여러 번 존재할 경우, 이 메서드는 뒤쪽(마지막)부터 탐색하여 해당 값과 일치하는 노드를 반환합니다.
FindLast() 메서드란?
FindLast(T value)는 매개변수로 전달된 값과 일치하는 마지막 노드를 LinkedListNode<T> 형식으로 반환합니다. 만약 일치하는 값이 리스트에 존재하지 않으면 null을 반환하므로, 사용 전에 null 여부를 확인하는 것이 안전합니다.
예제 1: 정수형 LinkedList에서 마지막 노드 찾기
아래 예제에서는 정수 300이 두 번 저장된 LinkedList에서 FindLast()를 사용해 마지막 노드를 찾습니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
LinkedList<int> list = new LinkedList<int>();
list.AddLast(100);
list.AddLast(200);
list.AddLast(300);
list.AddLast(400);
list.AddLast(500);
list.AddLast(300);
list.AddLast(500);
Console.WriteLine("LinkedList elements...");
foreach(int i in list) {
Console.WriteLine(i);
}
LinkedListNode<int> val = list.FindLast(300);
Console.WriteLine("Specified value = " + val.Value);
}
}실행 결과
LinkedList elements... 100 200 300 400 500 300 500 Specified value = 300
리스트에 300이 두 개 존재하지만, FindLast()는 뒤에서부터 탐색하기 때문에 인덱스 5에 있는 두 번째 300 노드를 반환합니다.
예제 2: 문자열 LinkedList에서 마지막 노드 찾기
문자열 타입의 LinkedList에서도 동일하게 사용할 수 있습니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
LinkedList<String> list = new LinkedList<String>();
list.AddLast("One");
list.AddLast("Two");
list.AddLast("Three");
list.AddLast("Four");
list.AddLast("Five");
Console.WriteLine("Elements in LinkedList...");
foreach (string res in list) {
Console.WriteLine(res);
}
LinkedListNode<string> val = list.FindLast("Five");
Console.WriteLine("Specified value = " + val.Value);
}
}실행 결과
Elements in LinkedList... One Two Three Four Five Specified value = Five
FindLast()와 Find()의 차이점
Find()는 앞쪽(첫 번째)부터 탐색하여 처음으로 일치하는 노드를 반환하고, FindLast()는 뒤쪽(마지막)부터 탐색하여 나중에 일치하는 노드를 반환한다는 점이 핵심 차이입니다. 중복 값이 있을 때 어떤 노드가 필요한지에 따라 적절한 메서드를 선택하면 됩니다.