주어진 문자열이 문자열 목록에 있는지를 확인하는 빠른 방법이 필요합니다.목록과의 빠른 문자열 비교
문자열 목록이 없습니다 런타임까지 알려져 있지만, 그 이후는 변경되지 않습니다.
나는 단순히 List<String>
가 strings
라고 다음을 수행 할 수 : 목록에있는 많은 문자열이있는 경우
if (strings.Contains(item))
그러나이 제대로 수행합니다.
HashSet<String>
도 사용할 수 있지만이 경우 모든 수신 문자열에 GetHashCode
과 Equals
을 호출해야합니다. 예를 들어. 목록에있는 문자열은 3 개. 이 내용이 일 때 빠른 일 필요가 있음을 언급 했습니까? 내가 설정 할 수
오히려 HybridDictionary
의 논리처럼, 문자열의 수 (10 개 미만 문자열에 대한 예를 들어, 사용 목록, HashSet의 기타)에 따라 List
또는 HashSet
사용하기로 결정.
문자열이 유니 코드이기 때문에 표준 트리 구조는 작동하지 않지만 기수 나무/패트리샤 토리가 작동 할 수 있습니다. 벤치 마크가있는 좋은 C# 구현이 있습니까?
일부 사용자는 String
의 GetHashCode
을 우회하고 더 빠른 성능의 해시 기능을 사용하는 것에 대해 언급했습니다. 밖에 벤치 마크가 있습니까?
기본적으로 LINQ 표현식을 사용하여 최적화 된 switch 문을 작성하는 것은 매우 흥미로운 새로운 접근 방식입니다.
그 밖의 다른 방법은 무엇입니까? 설치 비용은 검색 속도 만 중요하지 않습니다. 이 중요한 경우
, 들어오는 문자열 값은 거의 목록에 표시되지 않습니다.
접미어로 된 유니 코드 정보에 대한 링크를 포함하도록 답변을 업데이트했습니다. –