Programing

HashSet 사용 방법

lottogame 2020. 11. 11. 07:52
반응형

HashSet 사용 방법.Contains () 메서드의 대소 문자를 구분하지 않는 모드?


HashSet<string>.Contains()대소 문자를 구분하지 않는 모드에서 방법을 사용하는 방법은 무엇입니까?


HashSet사용자 지정 비교자를 사용하여 만들 수 있습니다 .

HashSet<string> hs = new HashSet<string>(StringComparer.OrdinalIgnoreCase);

hs.Add("Hello");

Console.WriteLine(hs.Contains("HeLLo"));

다음과 같은 권한으로 만들어야합니다 IEqualityComparer.

HashSet<string> hashset = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);

다른 답변에서 보여 주듯이 여기에서는 필요하지 않지만 문자열을 사용하지 않는 다른 경우에는를 구현하도록 IEqualityComparer<T>선택한 다음 .Contains오버로드를 사용할 수 있습니다 . 다음은 문자열을 사용하는 예입니다 (다시 말하지만 다른 답변에서는 요구 사항을 충족하는 사용할 수있는 문자열 비교기가 이미 있음을 보여주었습니다). 주변의 많은 메서드 IEnumerable<T>에는 이러한 비교자를 허용하는 오버로드가 있으므로 구현 방법을 배우는 것이 좋습니다.

class CustomStringComparer : IEqualityComparer<string>
{
    public bool Equals(string x, string y)
    {
        return x.Equals(y, StringComparison.InvariantCultureIgnoreCase);
    }

    public int GetHashCode(string obj)
    {
        return obj.GetHashCode();
    }
}

그리고 그것을 사용하십시오

bool contains = hash.Contains("foo", new CustomStringComparer());

사용하고자 하는를 지정할 수 있는 생성자IEqualityComparer 를 사용해야합니다.

HashSet<String> hashSet = new HashSet<String>(StringComparer.InvariantCultureIgnoreCase);

StringComparer의 객체는 정적 속성과 같은 일부 자주 사용되는 비교자를 제공합니다.

참고 URL : https://stackoverflow.com/questions/2667635/how-to-use-hashsetstring-contains-method-in-case-insensitive-mode

반응형