Today I Learned :
1. C# Array, List 인덱스 찾는 방법
//// IndexOf()
// public static int IndexOf (Array array, object? value);
// 배열
Array.IndexOf(array, "A");
// 리스트
strList.IndexOf("A");
//// FindIndex()
// public static int FindIndex<T> (T[] array, Predicate<T> match);
// 배열
Array.FindIndex(array, element => element == "A");
// 리스트
strList.FindIndex(조건);
IndexOf()와 FindIndex()는 둘 다 배열에서 특정 요소의 인덱스를 찾는 데 사용되는 메서드이다.
그러나 두 메서드에는 몇 가지 차이점이 있다.
- 사용 가능한 컬렉션의 차이:
- IndexOf : Array, List, string 등 다양한 컬렉션에서 사용 가능합니다.
- FindIndex : 주로 배열 또는 배열과 유사한 컬렉션에서 사용됩니다.
- 찾는 방법의 차이:
- IndexOf : 요소의 값을 기준으로 검색합니다. 따라서 값이 동일한 경우 인덱스를 반환합니다.
- FindIndex : 더 복잡한 검색 조건을 사용할 수 있습니다. 람다식을 이용하여 원하는 조건에 맞는 첫 번째 요소의 인덱스를 찾을 수 있습니다.
- 성능 차이:
- 일반적으로 IndexOf가 좀 더 간단하고 특정한 상황에서 최적화되어 있어서 더 빠를 수 있습니다.
- FindIndex는 람다식을 사용하기 때문에 복잡한 검색 조건에 유연하게 대응할 수 있지만, 성능 면에서는 IndexOf보다 약간 느릴 수 있습니다.
- 사용 목적:
- 간단한 요소 검색이 필요한 경우에는 IndexOf를 사용하는 것이 간편하고 성능적으로 효율적입니다.
- 더 복잡한 검색 조건이 필요한 경우에는 Array.FindIndex를 사용하여 람다식을 통해 조건을 정의할 수 있습니다.
따라서, 일반적으로 간단한 요소 검색에서는 IndexOf를 사용하는 것이 더 흔하며, 성능 면에서도 적절한 선택일 수 있다.
2. Enumerable.Range(0, 10)
IEnumerable<int> sequence = Enumerable.Range(0, 10);
0 ~ 9 까지의 정수 시퀀스를 생성하는 LINQ 메서드
3. Except()
차집합을 구하는 LINQ 메서드
static void Main() {
int[] sequenceA = { 1, 2, 3, 4, 5 };
int[] sequenceB = { 3, 4, 5, 6, 7 };
var result = sequenceA.Except(sequenceB);
Console.WriteLine(string.Join(", ", result)); // 결과: 1, 2
}
4. Distinct()
중복을 제거해 주는 LINQ
Enumerable.Range(0, 10).Except(numbers).Distinct()
'TIL' 카테고리의 다른 글
20240119 TIL (0) | 2024.01.19 |
---|---|
20240118 TIL (0) | 2024.01.18 |
20240116 TIL (0) | 2024.01.16 |
20240115 TIL (1) | 2024.01.15 |
20240112 TIL (0) | 2024.01.12 |