가벼운 구조에 키 값 쌍 목록의 목록을 저장하려고합니다. 이것은 너무 성가시다. 뭐가 더 나은가요? 목록 < 사전 < 문자열, 문자열 > > 많은 오버 헤드를 추가합니까? 어떤 다른 옵션을 사용할 수 있습니까?List <KeyValuePair <string, string >>>을 어떻게 단축 할 수 있습니까?
답변
는 속기에 대한 별칭 사용을 고려 :
namespace Application
{
using MyList = List<List<KeyValuePair<string, string>>>;
public class Sample
{
void Foo()
{
var list = new MyList();
}
}
}
그것에 대해 알지 못했지만, 많은 도움이되었습니다. 감사. – paulwhit
사전, < 문자열, 문자열> 및 목록 < KeyValuePair < 문자열, 문자열 >> 전달할 데이터에 따라 모두 괜찮을 수 있습니다. 또한, 만일 당신이 같은 장소에서 긴 타입을 사용하려고한다면, 다른 타입을 속기를 위해 정의 할 수 있습니다. 이런 식으로 뭔가 :
public class MyShorthand : List<List<KeyValuePair<string, string>>> { }
또는 당신은 이런 유형의 별칭을 정의하기 위해 사용하는 문을 사용할 수 있습니다 :
using MyShorthand = System.Collections.Generic.List<System.Collections.Generic.List<System.Collections.Generic.KeyValuePair<string, string>>>;
타입 별명을 지정하는 것이 좋습니다.'Using MyShorthand = List
@ Noldorin : 특히 봉인 된 타입의 문제를 피할 수 있기 때문에 -이 경우 문제는 아니지만 ... –
감사합니다! –
당신이 키를 사용하는 사전으로 값을 액세스하는 경우, 즉 무엇을 의미. 사전의 오버 헤드를 줄이려면 초기 용량을 시도하십시오.
public class MyDictionary
{
private Dictionary<string, string> values;
public MyDictionary()
{
values = new Dictionary<string, string>();
}
public void Add(int index, string key, string value)
{
int hash = ((0xFFFF) & index) * (0xFFFF) + (0xFFFF) & key.GetHashCode();
values.Add(hash, value);
}
public string Get(int index, string key)
{
int hash = ((0xFFFF) & index) * (0xFFFF) + (0xFFFF) & key.GetHashCode();
return values[hash];
}
}
재미있는 ... 내 요구에 너무 많이. – paulwhit
모두 List
및 Dictionary
꽤 효율적이다, 그래서 나는 않을 것 (두 목록 오히려 작은 경우)
다른 방법으로는, (예뻐 제외) 같은 것을 사용자 정의 해시 객체를 구현할 수 그들을 사용하는 것에 대해 두 번 생각하십시오. (당신이 목록에서 gazillion 사전을 저장하는거야,하지만 아주 일반적이지 아니라면.)
당신이List<Dictionary<string, string>>
입력 너무 많이이라고 생각하면
, 당신은 당신의 전문에 말할 수
using LoDSS = System.Collections.Generic.List<System.Collections.Generic.Dictionary<string, string>>;
이것은 서브 클래 싱이 필요없는 별칭 일뿐입니다.
틀린 점은 별칭이 별칭에 스택되지 않아서 대신 다음 코드를 사용해야한다는 것입니다. using LoDSS = System.Collections.Generic.List
나는 고쳐졌다. 이를 반영하기 위해 답변을 업데이트했습니다. – Ruben
명확성을 위해 귀하의 KeyValuePair<string, string>
을 더 짧은 것으로 포장합니다 (예 : StringPair
이고 또한 StringPair
의 목록에 대한 속기를 정의합니다. 이렇게하면 구문이 짧아지고 IMHO 가독성이 향상됩니다.
public class StringPair : KeyValuePair<string, string> { }
public class StringPairList : List<stringPair> { }
..
var jaggedList = new List<StringPairList>();
KeyValuePair는 봉인 된 클래스입니다.이 클래스에서 파생 될 수 없습니다. –
- 1. List <KeyValuePair <string, string >>
- 2. List <keyvaluepair <string, string >>의 여러 키를 어떻게 확인할 수 있습니까?
- 3. POJO에서지도 <String, String>을 생성하십시오.
- 4. <사전 <int, string>>
- 5. System.Collections.Generic.Dictionary <string, string>
- 6. Java Generics가 Map <String,?을 (를) 사용하고 있습니다. extend List <String>>
- 7. 문제는 <String>
- 8. <String> to String
- 9. IDictionary <string, IDictionary <string, ICollection <string> >> LINQ
- 10. 웹 서비스에서 List <DictionaryClass <string, string >>을 반환하고 싶지만 IDictionary에 오류가 발생했습니다.
- 11. DataContractSerializer를 사용하여 Dictionary <string, List <string>>을 serialize하는 방법은 무엇입니까?
- 12. Map <String, string>의 string []을 얻는 방법
- 13. JAXB to unmarshall <string> foobar</string>
- 14. 는 <String>
- 15. DataSource로 List <KeyValuePair <UserEnum, String >>이있는 Windows Forms 콤보 상자 사용 - C#
- 16. List <String> JComboBox의 배열
- 17. 콜렉션 <String>
- 18. C#으로 IEnumerable <KeyValuePair <string, string >> 개체 만들기? 테스트 목적으로
- 19. List <string>이 AutoCompleteStringCollection이되는 방법
- 20. IEnumerable <KeyValuePair>에서 일반 GetOnlyKeys에 대한 확장 메서드 <int, string>>
- 21. JPA Map <String, String> mapping
- 22. <String, String>은 무엇을 의미합니까?
- 23. XML 사전을 사용하여 클래스 직렬화 <string, List <string>> 개체
- 24. 목록 <string>을 비교하고
- 25. 바인딩 목록 <string>을 ComboBox
- 26. 사전을 포함한 <string, string> 사전
- 27. HashMap <String, String> temp = 새 HashMap <String, String>(); 패스 이미지
- 28. StringDictionary 대 사전 <string, string>
- 29. 최고의 문자열 컨테이너 : StringCollection, Collection <string>, List <string>, ArrayList, ..?
- 30. HashMap <CharSequence, CharSequence>을 HashMap <String, String>으로 설정할 수 없습니다.
을 당신을 위해 최적화 무엇입니까? 구조가 어떻게 사용될 것입니까? 당신의 타입 선언에서 문자의 수를 최적화하고있는 것 같은데요) – ojrac
네, 그냥보기가 번거롭지 않게하려고합니다 : – paulwhit