Ho bisogno di una mappa in cui i valori siano di tipi diversi, come intero, stringa ecc. Il problema con Java è che le primitive qui non sono Object
s che suggerisce che potrebbe non essere possibile avere un dizionario ibrido. Voglio confermarloEsiste un dizionario che accetta valori di vari tipi di dati?
risposta
È possibile sfruttare l'autoboxing e utilizzare Integer
anziché int e così via.
I corrispondenti tipi (Integer
, Double
, Bool
, ...) erediterà oggetto, così si potrebbe utilizzare uno standard Map<Object, Whatever>
e buttare roba arbitraria a questo.
Sembra che tu voglia solo un Map<String, Object>
(o qualunque sia il tuo tipo di chiave).
valori primitivi sono imballati in modo appropriato:
Map<String, Object> map = new HashMap<String, Object>();
map.put("int", 20);
map.put("long", 100L);
// etc
Si noti che, al fine di recuperare il valore e Unbox esso, è necessario menzionare il tipo di involucro specifica:
// Explicit unboxing
int x = (int) (Integer) map.get("int");
// Implicit unboxing
int y = (Integer) map.get("int");
// USing a method from Number instead
int z = ((Integer) map.get("int")).intValue();
Geez Jon, davvero non dormi. Stavo per pubblicare la stessa cosa. :) –
Un'altra opzione per i numeri è Map
@Peter Lawrey, l'OP vuole un valore anche di tipo String. Il numero non si qualifica. –
Puoi utilizzare Integer
anziché int
.
Quando si inseriscono le primitive in un Map
in Java, ottengono Auto-Boxed nella loro forma di oggetto. Ad esempio, se avete un Map
definito come:
Map<Integer, String> myMap = new HashMap<Integer, String>();
quindi è possibile utilizzare le primitive di tipo int
, in quanto saranno automaticamente inscatolato in un Integer
.
Per quanto riguarda la tua domanda iniziale, la definizione di un Map
come tale:
// using Integer for key type, can be something else
Map<Integer, Object> myMap = new HashMap<Integer, Object>();
allora si dovrebbe essere in grado di mettere qualsiasi oggetto Java nella mappa.
Map ** è ** un'interfaccia, quindi 'nuova Map
@The Elite Gentleman - Ci dispiace, errore di battitura –
- 1. Django - Distingue i vari tipi di IntegrityError
- 2. VS2012 $ (esiste) accetta solo valori scalari
- 3. Esiste un database di valori di "pixel pixel ratio" per vari dispositivi?
- 4. Differenze tra vari tipi di bool?
- 5. Tipo di dati che assume solo un intervallo di valori
- 6. Marketshare di vari tipi di CPU nei telefoni Android
- 7. Creare una funzione C che accetta parametri di diversi tipi di dati
- 8. Gson deserialize json con vari tipi di valore
- 9. d3js accetta/ripristina valori di input
- 10. AFNetworking accetta tutti i tipi di contenuto
- 11. Esiste un'implementazione standard di F # defaultArg che accetta pigro?
- 12. Memorizzazione di valori in un dizionario
- 13. Tipi di dati SQLite
- 14. Esiste una funzione standard che accetta un comando e un elenco di chiavi e restituisce l'elenco dei valori corrispondenti?
- 15. Esiste un database Haskell che utilizza i tipi di dati algebrici?
- 16. Esiste una classe .NET che rappresenta i tipi di operatore?
- 17. Quando utilizzare vari tipi di cassette postali Akka
- 18. complessi Tipi di Nullable Valori
- 19. eliminazione chiave, coppie di valori da un dizionario dati un elenco di chiavi da eliminare
- 20. Come scrivere la funzione Java che restituisce i valori di più tipi di dati?
- 21. Esiste un errore Erlang os: cmd che accetta un elenco di stringhe anziché un singolo comando?
- 22. C++ 11 Funzione che accetta solo valori letterali stringa?
- 23. classe generica che accetta uno dei due tipi
- 24. Valori dizionario Python map()
- 25. Esiste un peggioramento delle prestazioni quando UTILIZZO SEMPRE tipi di valori nullable invece di tipi di valore?
- 26. Tipi di dati personalizzati SQLITE?
- 27. tipi di dati gerarchici
- 28. Python che crea un dizionario di liste
- 29. Creare un metodo che accetta la lunghezza variabile di argomenti Function con tipi possibilmente diversi
- 30. Perché esiste un costruttore di valori oltre al costruttore di tipi in Haskell?
vedere anche http://stackoverflow.com/questions/2001755/using-int-as-a-type-parameter-for-java-util-dictionary – Fortega
È possibile condividere altri progetti per i commenti. Nella mia esperienza, l'utilizzo di diversi tipi di valori in una mappa spesso è indice di una progettazione non ottimale. –
Voglio un desrializer JSON che possa creare un albero, basandosi solo sul messaggio invece di convertirlo in una determinata classe di destinazione. Quindi voglio un dizionario (dizionario o mappa qualunque sia il nome) o un elenco