이번 포스팅 내용은 Array.Sort에 람다식을 이용하는 방법이다.
단순 오름차순으로 변경하는게 아니라 다양한 조건을 사용해 정렬을 하는 법을 찾다가 알게된 문법이다.
Array.Sort()를 사용하면 오름차순 배열을 정렬할 수 있다.
int[] arr1 = { 20, 60, 40, 50, 30, 10 };
Array.Sort(arr1);
Console.WriteLine(string.Join(", ", arr1)); // 10, 20, 30, 40, 50, 60
하지만 개발을 하다보면 오름차순 뿐만아니라, 내림차순이나, 기준이 같으면 다른 항목을 비교하는 등 다양한 조건이 요구될 때가 있다.
람다식
람다식은 c#에서 익명 메서드를 만드는 방법으로 간단하게 설명하자면 '(매개변수 목록) => 식'의 형태로 표현된다.
Array.Sort(배열, 람다식)을 이용하면 정렬 조건을 변경할 수 있다.
int[] arr2 = { 20, 60, 40, 50, 30, 10 };
Array.Sort(arr2, (x, y) => x > y ? -1 : 1);
Console.WriteLine(string.Join(", ", arr2)); // 60, 50, 40, 30, 20, 10
Array.Sort()안의 람다식은 두개의 요소를 비교할 때 사용되며, -1이 return되면 x,y 순으로 1이 return되면 y,x 순으로 정렬 된다. 이를 이용해 위 예시는 x > y면 -1을 반환하기 때문에 내림차순으로 정렬이된다.
이를 이용하면 다양한 조건으로 정렬할 수 있다.
string[] arr3 = { "abc", "aaa", "banana", "news", "desk", "bbc", "america" };
Array.Sort(arr3, (x, y) =>
{
if (x.Length < y.Length)
return -1; // x,y 순
else if (x.Length > y.Length)
return 1; // y,x 순
else // x.Length == y.Length
return string.Compare(x, y);
});
Console.WriteLine(string.Join(", ", arr3)); // aaa, abc, bbc, desk, news, banana, america
문자열의 길이에 따라 오름차순으로 하고 길이가 같으면 알파벳 내림차순으로 정렬되는 조건으로 정리해 보았다.
'C# > Array' 카테고리의 다른 글
[C#] Array 메서드 모음 (1) | 2024.07.16 |
---|