알파벳순으로 오름차순으로 해시 테이블의 키를 탐색하는 가장 쉬운 방법은 무엇입니까?Hashtable의 키를 알파벳순으로 트래버스하는 방법은 무엇입니까?
답변
이는 키의 유형에 따라 크게 달라집니다. 그러나 그들이 문자열이라는 것을 가정 해 봅시다. 다음 LINQ 쿼리를 사용할 수 있습니다.
Hashtable table = GetHashTable();
var keys = table.Keys.Cast<String>().OrderBy(x => x);
더 복잡한 구조의 경우 LINQ 쿼리는 약간 다릅니다. 당신은 LINQ 코드는 해시 테이블 (그들은 키의 균일 한 분포를 가지고 만들어진 위해 설계되었습니다 정말 무엇을 다음
Hashtable table = GetHashtable();
var keys = table.Keys.Cast<Name>().OrderBy(x => x.First).ThenBy(x => x.Last);
그게 될 핵심
struct Name {
public string First;
public string Last;
// Equality code omitted
}
에 대한 다음과 같은 정의를 가지고 가정하자). 정렬 된 트리를 사용 하시겠습니까?
레거시 코드로 작업해야합니다. 지금은 SortedDictionary와 같은 것을 사용하기 위해 리팩토링하는 것을 매우 꺼려합니다.하지만 여전히 알파벳 순서로 키 (문자열)를 트래버스해야합니다. –
자연 순서대로 키를 유지하는지도를 원할 경우 Hashtable
을 사용하지 마십시오. 여전히 1.1을 사용하고 있다면 System.Collections.SortedList
을 사용하십시오. 2.0 이상을 사용하는 경우 SortedList<TKey, TValue>
또는 SortedDictionary<TKey, TValue>
을 사용하십시오. 후자의 두 개는 이고 주로 API 측면에서 동일한이지만 성능 특성이 다릅니다. 자세한 내용은 문서를 참조하십시오.
SortedList settings = new SortedList(GetSettings());
foreach (object key in settings.Keys)
{
//logic
}
가 정렬 &을 만드는 - 그것은 아마 약간 빠른 사용하려면 SortedList 수 있습니다
Hashtable settings = GetSettings(); ArrayList keys = new ArrayList(); keys.AddRange(settings.Keys); keys.Sort(); foreach (object key in keys) { // Logic here }
나는 SortedDictionary 아이디어를 좋아한다. Hashtable과 SortedDictionary
아니요 - 별개의 유형입니다. 약간의주의를 기울여 Hashtable에서 새로운 SortedDictionary를 만들 수 있습니다. 하지만 어쨌든 .NET 2.0을 사용한다면 왜 Hashtable을 처음 사용합니까? O (1) 조회가 실제로 필요하지 않는 한 대부분의 경우 Hashtable을 SortedDictionary로 바꿀 수 있어야합니다. –
글쎄, 난 내 상황에 가장 적합이 조각을 발견 ArrayList는 O (n) + O (nlog n) = O (nlog n)이고 SortedList 생성자는 O (n)이므로 arraylist를 사용하는 대신 SortedList를 직접 사용하는 것이 빠릅니다 명시 적으로 정렬하려면
:
- 1. Btree를 트래버스하는 방법은 무엇입니까?
- 2. JsonObject를 트래버스하는 방법은 무엇입니까?
- 3. eiffel에서 디렉토리를 트래버스하는 방법은 무엇입니까?
- 4. File.listFiles를 알파벳순으로 작성하는 방법은 무엇입니까?
- 5. 루프에서 Hashtable의 항목 제거
- 6. XPath를 재귀 적으로 트래버스하는 방법은 무엇입니까?
- 7. 파이썬에서 트리를 트래버스하는 가장 효율적인 방법은 무엇입니까?
- 8. 인접성 매트릭스를 통해 트래버스하는 방법은 무엇입니까?
- 9. DATA를 얻기 위해이 XML을 트래버스하는 방법은 무엇입니까?
- 10. VB.NET에서 연결된 문자열을 트래버스하는 방법은 무엇입니까?
- 11. JQuery에서 변수를 사용하여 스코프를 트래버스하는 방법은 무엇입니까?
- 12. Dictionary와 Hashtable의 주된 차이점은 무엇입니까
- 13. 목록의 멤버를 알파벳순으로 검색하는 방법은 무엇입니까?
- 14. 알파벳순으로 정렬하지만 그룹이나 기호를 존중하는 방법은 무엇입니까?
- 15. Hashtable의 모든 내용을 가져 와서 NSMutableArray에 넣는 방법은 무엇입니까?
- 16. .net hashtable의 크기 찾기
- 17. HashTable의 여러 필드
- 18. Hashtable의 테이블 특성이 직렬화되는 이유는 무엇입니까?
- 19. List 또는 Observable 컬렉션에서 컬렉션의 항목을 트래버스하는 방법은 무엇입니까?
- 20. Ruby에서 YAML 트리의 모든 노드를 트래버스하는 방법은 무엇입니까?
- 21. Clojure에서 생성자 함수에서 생성 된 트리를 트래버스하는 방법은 무엇입니까?
- 22. 이 데이터를 저장하고 트래버스하는 가장 효율적인 방법은 무엇입니까?
- 23. JQuery를 사용하여 테이블 행을 트래버스하는 가장 좋은 방법은 무엇입니까?
- 24. Perl을 사용하여 원격 (ftp) 디렉토리 트리를 트래버스하는 방법은 무엇입니까?
- 25. Java에서 HashTable의 사용자 정의 구현?
- 26. 외래 키를 추가하는 방법은 무엇입니까?
- 27. X에서 키를 캡처하는 방법은 무엇입니까?
- 28. 기본 키를 인증하는 방법은 무엇입니까?
- 29. 플렉스 : 테이블 열을 가장 효과적으로 트래버스하는 방법
- 30. Eclipse : 일부 폴더의 모든 파일을 트래버스하는 방법
"기호 캐스팅을 해결할 수 없습니다."( –
@SeasonedCoder : System.Linq를 포함해야합니다. http://msdn.microsoft.com/en-us/library/bb341406.aspx –