C#의 HashSet 대 목록

Muhammad Maisam Abbas 2024년2월16일
  1. C#의 HashSet<T>
  2. C#의 목록<T>
  3. HashSet<T> 대 C#의 ​​List<T>
C#의 HashSet 대 목록

이 자습서에서는 C#의 HashSet<T>List<T>의 차이점과 유사점에 대해 설명합니다.

C#의 HashSet<T>

집합의 수학적 정의는 순서가 지정되지 않은 고유한 개체의 모음입니다. C#의 HashSet 데이터 구조도 동일한 원칙을 따릅니다.

HashSet은 특정 순서를 따르지 않는 비반복 개체의 모음입니다. HashSet은 일반적으로 데이터에서 중복 값을 원하지 않을 때 사용됩니다.

System.Collection.Generic 네임스페이스에 포함된 일반 컬렉션입니다.

HashSet의 장점은 합집합, 교집합 및 차집합과 같은 모든 집합 연산을 적용할 수 있다는 것입니다. HashSet 사용의 한 가지 주목할만한 단점은 특정 시퀀스를 따르지 않기 때문에 정렬할 수 없다는 것입니다.

다음 코드 조각은 C#에서 해시 집합으로 작업하는 방법을 보여줍니다.

HashSet<int> weirdNumbers = new HashSet<int>();
weirdNumbers.Add(10);
weirdNumbers.Add(13);
weirdNumbers.Add(17);
weirdNumbers.Add(78);
weirdNumbers.Add(13);

Console.WriteLine("HashSet before removal");
foreach (int val in weirdNumbers) {
  Console.WriteLine(val);
}
weirdNumbers.Remove(13);
Console.WriteLine("HashSet after removal");
foreach (int val in weirdNumbers) {
  Console.WriteLine(val);
}

출력:

HashSet before removal
10
13
17
78
HashSet after removal
10
17
78

위의 코드 예제에서 일반 해시 집합을 만들고 값을 삽입하고 해시 집합에서 제거하고 해시 집합 내부에 인쇄하는 방법을 보여주었습니다.

HashSet<T> 클래스 내의 Add() 함수는 해시 세트에 단일 값을 삽입하는 데 사용됩니다. Add() 함수와 함께 HashSet<T> 클래스 내에서 다른 많은 유용한 함수가 제공됩니다.

Remove(T val) 함수는 해시 세트에서 val을 제거합니다. 값을 입력 매개변수로 받아 해시 세트에서 제거합니다.

C#의 목록<T>

C#에서 목록은 강력한 형식의 개체 모음입니다. 목록의 요소는 인덱스를 통해 액세스할 수 있습니다.

목록 개체에는 목록을 정렬, 검색 및 수정하는 데 유용한 여러 메서드가 포함되어 있습니다. System.Collection.Generic 네임스페이스에 포함되어 있습니다.

목록의 또 다른 장점은 컴파일 시 유형 검사를 제공하고 제네릭이기 때문에 boxing/un-boxing을 수행하지 않는다는 것입니다. T 데이터 유형 목록은 List<T>로 초기화할 수 있습니다.

다음 코드 조각은 C#에서 목록으로 작업하는 방법을 보여줍니다.

List<int> weirdNumbers = new List<int>();
weirdNumbers.Add(10);
weirdNumbers.Add(17);
weirdNumbers.Add(78);
weirdNumbers.Add(13);
foreach (int val in weirdNumbers) {
  Console.WriteLine(val);
}

출력:

10
17
78
13

위의 코드에서 우리는 첫 번째 줄에서 정수 weirdNumbers 목록을 초기화하고 Add() 함수를 사용하여 목록에 값을 삽입하고 foreach 루프를 사용하여 목록 내의 모든 값을 인쇄했습니다.

List<T> 클래스 내의 Add() 함수는 목록에 값을 삽입하는 데 사용됩니다. Add() 기능과 함께 List<T> 클래스 내에서 다른 많은 유용한 기능이 제공됩니다.

AddRange() 함수는 기존 목록에 다른 배열이나 목록을 삽입할 수 있습니다. 목록 또는 배열을 입력 매개변수로 사용하고 기본 목록의 끝에 목록 또는 배열의 요소를 추가합니다.

Insert() 함수를 사용하여 목록의 지정된 인덱스에 단일 값을 삽입할 수도 있습니다. Insert() 함수는 정수 인덱스와 T 유형 값을 입력 매개변수로 사용합니다.

우리는 목록에 새로운 요소를 추가하는 것에 대해 많이 이야기했습니다. 목록에서 기존 요소를 제거하는 방법에 대해 논의해 보겠습니다.

Remove(T val) 함수는 목록 내에서 val이 처음 나타나는 것을 제거합니다. 값을 입력 매개변수로 사용하고 인덱스 0부터 시작하여 목록 내에서 해당 값의 첫 번째 항목을 제거합니다.

RemoveAt(int index) 함수는 목록 내 특정 인덱스의 값을 제거합니다. 인덱스를 입력 매개변수로 사용하고 배치된 값을 제거합니다.

다음 코드 조각은 우리가 논의한 모든 기능을 깔끔한 작은 블록에 넣습니다.

List<int> weirdNumbers = new List<int>();
weirdNumbers.Add(10);
weirdNumbers.Add(17);
weirdNumbers.Add(78);
weirdNumbers.Add(13);
weirdNumbers.Insert(3, 31);
Console.WriteLine("List before removal");
foreach (int val in weirdNumbers) {
  Console.WriteLine(val);
}
weirdNumbers.Remove(31);
weirdNumbers.RemoveAt(1);
Console.WriteLine("List after removal");
foreach (int val in weirdNumbers) {
  Console.WriteLine(val);
}

출력:

List before removal
10
17
78
31
13
List after removal
10
78
13

위의 코드 예제에서 일반 목록을 만들고, 목록에 값을 삽입하고, 목록에서 값을 제거하고, 목록 내부의 값을 인쇄하는 방법을 보여주었습니다.

HashSet<T> 대 C#의 ​​List<T>

목록과 해시 집합은 서로 장단점이 있습니다. 해시 세트는 많은 양의 데이터에 대한 목록보다 훨씬 빠르지만 목록은 인덱싱 기능을 제공합니다.

목록을 정렬할 수 있지만 해시 집합은 집합 작업을 수행하는 기능을 제공합니다.

요약하면 목록 또는 해시 집합의 선택은 전적으로 우리의 문제에 달려 있습니다.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

관련 문장 - Csharp List