In termini di prestazioni e utilizzo della memoria, che è meglio memorizzare oggetti: Dizionario o Elenco?

-4

Voglio sapere se è più veloce ed efficiente archiviare e accedere agli oggetti in un dizionario annidato Dictionary<string, Dictionary<string, int>> VS List<Object> . Anche se l'aggiunta di oggetti in un dizionario annidato richiede la scrittura di più codice controllando le chiavi, quali potrebbero essere le altre differenze che sono importanti da considerare?

Esempio:

(1) Dictionary<string, Dictionary<string, int>>

    Texas       ----> Houston ----> Harris
                              ----> Fortbend
                              ----> [...other counties]
                ----> Dallas  ----> ....
    California  ----> .....   ----> ...

(2) List<US>

    US.States = Texas, US.City = Houston, Us.County = Harris
    
posta jdmngo 19.06.2017 - 20:14
fonte

1 risposta

0

Penso che nessuno dei due sia la risposta corretta. Penso che sarebbe meglio creare tipi di dati per questi:

using System;
using System.Linq;
using System.Collections.Generic;

class State {
    public string Name { get; set; }

    Dictionary<string, City> citiesByName;

    public State(string name, IEnumerable<City> cities) {
        this.Name = name;
        this.citiesByName = cities.ToDictionary(c => c.Name, c => c);
    }
}

class City {
    public string Name { get; set; }

    Dictionary<string, County> countiesByName;

    public City(string name, IEnumerable<County> counties) {
        this.Name = name;
        this.countiesByName = counties.ToDictionary(c => c.Name, c => c);
    }
}

class County {
    public string Name { get; set; }
    //add whatever a county has, e.g. ZIP codes

    public County(string name) {
        this.Name = name;
    }
}

class MainClass {
    public static void Main (string[] args) {

        Dictionary<string, State> states = new List<State>() {
            new State(
                name: "Texas",
                cities: new List<City>() {
                    new City(
                        name: "Houston",
                        counties: new List<County>() {
                            new County("Harris"),
                            new County("Fortbend")
                        }
                    ),
                    new City(
                        name: "Dallas",
                        counties: new List<County>() {
                            //...
                        }
                    )
                }
            ),
            new State(
                name: "California",
                cities: new List<City>() {
                    //...
                }
            )
        }.ToDictionary(s => s.Name, s => s);
    }
}
    
risposta data 19.06.2017 - 20:53
fonte

Leggi altre domande sui tag