我需要將2個值保存在一個列表中,以便將所有位置和我的控制板放在一個列表中。 我正在使用字典,但我發現只有一種方法映射。 除了二維數組之外,有沒有人有任何建議?雙向映射列表
Q
雙向映射列表
5
A
回答
6
您可以使用字典很輕鬆地爲雙向映射,如果你不關心的反向映射線性搜索性能(這你會用一個二維數組得到反正):
var dictionary = new Dictionary<string, int>();
// Fill it up...
int forwardMapResult = dictionary["SomeKey"];
string reverseMapResult = dictionary.Where(kvp => kvp.Value == 5).First().Key;
如果查詢速度比您需要維護兩個字典是一個問題 - 一個用於正向查找,另一個用於反向查找。或者使用內存中的可索引數據庫,如SQLite。
7
這可能會幫助:
public class BiDirectionalDictionary<L, R>
{
private readonly Dictionary<L, R> leftToRight = new Dictionary<L, R>();
private readonly Dictionary<R, L> rightToLeft = new Dictionary<R, L>();
public void Add(L leftSide, R rightSide)
{
if (leftToRight.ContainsKey(leftSide) ||
rightToLeft.ContainsKey(rightSide))
throw new DuplicateNameException();
leftToRight.Add(leftSide, rightSide);
rightToLeft.Add(rightSide, leftSide);
}
public L this[R rightSideKey]
{ get { return rightToLeft[rightSideKey]; } }
public R this[L leftSideKey]
{ get { return leftToRight[leftSideKey]; } }
public bool ContainsKey(L leftSideKey)
{ return leftToRight.ContainsKey(leftSideKey); }
public bool ContainsKey(R rightSideKey)
{ return rightToLeft.ContainsKey(rightSideKey); }
}
[Serializable]
public class DuplicateNameException : SystemException
{
protected DuplicateNameException(
SerializationInfo info, StreamingContext context);
public DuplicateNameException();
public DuplicateNameException(string s);
public DuplicateNameException(string message,
Exception innerException);
}
這有一個問題,如果左側和右側是相同的類型......也就是說,它不工作的權利,如果你嘗試
var myBiDireDict = new BiDirectionalDictionary<DateTime, DateTime>();
+0
非常好,假設L&R不是同一類型,並且總是存在1對1的關係。 –
相關問題
- 1. 雙向映射
- 2. 雙向映射
- 3. 雙向映射
- 4. 用休眠映射雙向列表
- 5. PHP雙向映射
- 6. AutoMapper雙向映射
- 7. Python雙向映射
- 8. 雙向/反向映射
- 9. 映射和序列化雙向關聯
- 10. Java中的雙向映射?
- 11. 傑克遜雙向映射
- 12. 一對多雙向映射
- 13. 雙向多對一映射
- 14. 雙向映射同步
- 15. NHibernate雙向多對多映射的2個列表
- 16. NHibernate雙向多對多映射列表/包
- 17. 休眠多對多使用Java列表雙向映射
- 18. hibernate @onetomany雙向映射不能正確映射數據
- 19. 映射列表
- 20. 角雙向綁定和映射在UI
- 21. Boost :: Bimap相當於雙向多映射
- 22. 代碼的雙向NHibernate映射
- 23. Java中的雙向多值映射
- 24. 總是逆映射雙向關係?
- 25. 映射雙向一對多Hibernate實體
- 26. 雙向映射做對了嗎?
- 27. 休眠註釋雙向映射
- 28. 雙向協會和NHibernate映射
- 29. 休眠一對一映射雙向
- 30. 休眠選擇與雙向映射
你想在一個集合中存儲2種不同的類型? –
是的,這正是我想要做的! –