Dictionary - objaśnienie kodu

Dictionary - objaśnienie kodu
R9
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 7 lat
  • Postów:36
0

Witam, mam mały problem z rozczytaniem pewnego kodu, mianowicie chodzi o Dictionary w Dictionary(?).

Deklaracja
public Dictionary<int, Dictionary<int, double>> dictionary = new Dictionary<int,Dictionary<int,double>>();

Kopiuj

Następnie jakaś metoda i tutaj już mało rozumiem:

<code class="c#">
public void JakasMetoda()
        {
            for (int i = 0; i < lista.Count; i++)
            {
                dictionary[i] = new Dictionary<int,double>(); // na zerowym indeksie istniejącej już kolekcji nowe Dictionary?
                for (int j = 0; j < lista.Count; j++)
                {
                    var x = i+j;
                    dictionary[i][j] = x; // tutaj do czego jest do dodawane? do pierwszego dictionary czy do tego zainicjalizowanego na zerowym?
                }
            }
        }

I jak właściwie finalnie wygląda dictionary stworzone na samym poczatku? Co zostanie uzyskane po odwołaniu się do konkretnych indeksów?

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:6 dni
  • Lokalizacja:Wrocław
4

W Dictionary nie masz indeksów tylko klucze.
Zapis dictionary[i] = new Dictionary<int, double>(); oznacza utworzenie nowego słownika w zewnętrznym słowniku pod kluczem będącym aktualną wartością zmiennej i.
Ponieważ masz słownik w słowniku, to zapis dictionary[i][j] = x oznacza odwołanie do zewnętrznego słownika pod kluczem i oraz wewnętrznego słownika pod kluczem j i przypisanie tam wartoźci x.

Ogólnie taka struktura danych wygląda tak:

Kopiuj
I: [1: a, 2: b, 3: c]
II: [1: a, 2: b, 3: c]
III: [1: a, 2: b, 3: c]

Cyfry rzymskie to klucze zewnętrznego słownika, cyfry arabskie to klucze wewnętrznych słowników, a litery to wartości.

edytowany 1x, ostatnio: somekind
FA
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 7 lat
  • Postów:475
0
somekind napisał(a):

W Dictionary** nie masz indeksów** tylko klucze.
(...)
Cyfry rzymskie to indeksy zewnętrznego słownika

:P

somekind
No fakt, pisałem szybciej niż myślę, ale teraz ponieważ dodałeś post zamiast komentarza wychodzisz na łosia. ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.