Ho incontrato lo stesso problema che molte persone sembrano dover affrontare da PHP, la mancanza di una soluzione array associativa decente e facile da usare. Qui ho letto quesioni che fondamentalmente tutte suggerivano di usare una HashMap, come questa Q: Java associative-arrayArray associativi e Java
Tuttavia, non penso che le soluzioni menzionate risolveranno il mio problema. Spiegherò.
Ho una lista con 250 articoli (paesi) per i quali voglio memorizzare i dati. I dati sono di lunghezza indefinita, il che significa che può contenere più voci per "colonna", a volte nessuna voce, a volte 4, eccetera.
in PHP ho potuto solo fare questo:
$country_data = new array();
$country_data["nl"]["currency"] = "euro";
$country_data["nl"]["languages"] = "Dutch";
...
$country_data["us"]["currency"] = "US dollar";
$country_data["us"]["languages"] = array("English", "Spanish");
Così a volte mi desidera memorizzare una matrice, a volte no. Ovviamente potrebbe anche essere un array con una sola voce invece di una stringa, ma sto solo dicendo.
Quindi, la domanda è: come posso archiviare e recuperare gli array negli array in una HashMap? Capisco che sono praticamente bloccato con la brutta soluzione di HashMap, ma non riesco ancora a vedere come questo mi consenta di archiviare gli array, sono sicuro di trascurare qualcosa di semplice. Un esempio basato sul mio sarebbe fantastico!
UPDATE
ho optato per andare per HashMaps di HashMaps La ragione di questo ho bisogno di essere in grado di sorvegliare tutto facilmente e modificare poche righe di valori quando necessario. E questo è flessibile, posso facilmente ottenere il nome di un paese in base al codice del paese, una lingua, oppure posso ottenere la HashMap country_data quando ne ho bisogno, o tutti i nomi dei paesi, eccetera.
public class iso_countries {
Map<String, Object> country_data = new HashMap<String, Object>();
Map<String, String> country_name = new HashMap<String, String>();
Map<String, String[]> country_idd = new HashMap<String, String[]>();
Map<String, String[]> country_cid = new HashMap<String, String[]>();
public iso_countries(){
country_name.put("nl", "Netherlands");
country_idd.put("nl", new String[]{"+31"});
country_cid.put("nl", new String[]{"#31#", "*31#"});
setData(country_name, country_cid, country_idd);
// 249 * 4 lines more and later...
}//end method
public void setData(Map country_name, Map country_cid, Map country_idd){
country_data.put("name", country_name);
country_data.put("idd", country_idd);
country_data.put("cid", country_cid);
}//end method
public String getCountryName(String countryCode){
String name = country_name.get(countryCode);
return name;
}//end method
public String[] getCountryIdd(String countryCode){
String prefix[] = country_idd.get(countryCode);
return prefix;
}//end method
public String[] getCountryCid(String countryCode){
String cid[] = country_cid.get(countryCode);
return cid;
}//end method
}//end class
Si desidera un comportamento simile a hashmap in php o si sta implementando il codice in java? –
Perché i tuoi elenchi hanno codici paese e indici? '$ Country_data [" us "]' funziona perfettamente? –
solo per commentare il tuo codice PHP: non ha nemmeno senso, che i tipi di valore nell'indice ''language'' possono essere totalmente diversi, una volta una stringa, una volta un array ... dovresti decidere quale preferisci, e attenersi ad esso. I tipi di missaggio indicano una pratica di codifica davvero scadente, che rende il tuo codice erratico. EDIT: @Brendan Long: sì, anche questo è un buon avviso. – Sk8erPeter