Tek bir listede 2 değer kaydetmem gerekiyor, böylece tüm konumlar ve kartımın denetimlerim tek bir listede var. Sözlük kullandım, ancak tek bir yol haritasının olduğunu öğrendim. 2-boyutlu bir dizi dışında herhangi bir tavsiyede bulunan var mı?İki Yönlü Eşleme listesi
cevap
Eğer (yine 2B dizi alacağınız) ters haritalama doğrusal arama performansı umurumda değil eğer iki yönlü haritalama gibi kolayca yeterli bir sözlük kullanabilirsiniz:
var dictionary = new Dictionary<string, int>();
// Fill it up...
int forwardMapResult = dictionary["SomeKey"];
string reverseMapResult = dictionary.Where(kvp => kvp.Value == 5).First().Key;
Arama hızı, bir tanesi ileriye doğru arama için, diğeri de geriye doğru olmak üzere iki sözlükte saklamanız gereken bir sorunsa. Veya SQLite gibi bir bellek içi, endekslenebilir veritabanı kullanın.
Bu yardımcı olabilir: sol taraf ve sağ taraf aynı tip ... yani çalışmıyor yoksa bu denemek doğru olmadığını bir sorunu var
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>();
L & R'nin aynı türde olmadığını ve her zaman 1'den 1'e kadar bir ilişki olduğunu varsayarsak çok iyi olur. –
- 1. İki yönlü eşlemede sorun nedir?
- 2. açısal iki yönlü bağlanma?
- 3. Solr iki yönlü 0 karakterleri
- 4. $ routeParams ile iki yönlü bağlantı?
- 5. clojure iki yönlü bir harita?
- 6. MongoEngine'de İki Yönlü İlişkiler Uygulaması
- 7. İki Yönlü Harita Kakao içinde
- 8. WPF iki yönlü bağlama XML
- 9. İki yönlü harita .NET içinde
- 10. ASP.NET verileri, arkasındaki koddan iki yönlü, çift yönlü bağlantı sağlar.
- 11. Spring Boot'daki nesnelerin listesi için Yaml'de eşleme listesi
- 12. Automapper Eşleme Listesi <T>, T
- 13. Neden Run.Text varsayılan olarak iki yönlü bağlanır?
- 14. İki yönlü istemci sunucusu ağ iletişimi
- 15. Yönergede iki yönlü veri bağlama çalışmıyor
- 16. Javascript'te iki yönlü jeneratörler gerçek dünya kullanımı
- 17. Angular2 - Sınıf özniteliğinde iki yönlü veri bağlama
- 18. Angular2 Bileşen @ Giriş iki yönlü ciltleme
- 19. Metin kutusu iki yönlü ciltleme tetiklenmiyor
- 20. iki yönlü hibernate - org.hibernate.AnnotationException: Bilinmeyen mappedBy in:
- 21. AngularJS directive $ iki yönlü bağlama izle
- 22. Polymer.js iki yönlü sürüm 0.5 içinde
- 23. iki yönlü veri bağlama angularjs denetleyici tarafında
- 24. Açısal 1.5 Bileşen İki Yönlü Ciltleme Çalışmıyor
- 25. Hazırda bekletme, @ManyToMany iki yönlü ilişkiyle sonsuz döngüye neden olur
- 26. Scala - İki Listeleme Tuple Listesi
- 27. scala: eşleme deyimine eşleme deyimine eşleme deyimini dönüştür -
- 28. Haskell'de tam olarak 2 elemanla desen eşleme listesi
- 29. Başka bir bileşenle yerel iki yönlü bağlama React
- 30. Angular2 - iki yönlü veri bağlamada önceki değeri geri yükle
Tek bir Koleksiyonda 2 farklı Tip saklamak ister misiniz? –
Evet, tam olarak ne yapmak istiyorum! –