HashMap<String, int>
scheint nicht zu funktionieren, aber HashMap<String, Integer>
funktioniert. Irgendwelche Ideen warum?Java: HashMap <String, int> funktioniert nicht
Antwort
Sie können in Java keine primitiven Typen als generische Argumente verwenden. Verwenden Sie stattdessen:
Map<String, Integer> myMap = new HashMap<String, Integer>();
Mit auto-boxing/unboxing es kaum einen Unterschied im Code ist. Auto-Box bedeutet, dass Sie schreiben können:
myMap.put("foo", 3);
statt:
myMap.put("foo", new Integer(3));
Auto-Box bedeutet, dass die erste Version implizit in den zweiten umgewandelt wird. Auto-Unboxing bedeutet, dass Sie schreiben können:
int i = myMap.get("foo");
statt:
int i = myMap.get("foo").intValue();
Der implizite Aufruf intValue()
bedeutet, wenn der Schlüssel nicht gefunden, es wird ein NullPointerException
, zum Beispiel erzeugen:
int i = myMap.get("bar"); // NullPointerException
Der Grund ist type erasure. Anders als etwa in C# werden generische Typen zur Laufzeit nicht beibehalten. Sie sind nur „syntaktischer Zucker“ für die explizite Casting sparen Sie dies zu tun:
Integer i = (Integer)myMap.get("foo");
Um Ihnen ein Beispiel, dieser Code ist vollkommen legal:
Map<String, Integer> myMap = new HashMap<String, Integer>();
Map<Integer, String> map2 = (Map<Integer, String>)myMap;
map2.put(3, "foo");
Ihr letztes Beispiel funktioniert nicht: Kann nicht von Map
Warum funktioniert es nicht mit 'Float' und' Double'? –
Betrachtet man jeden einzelnen Code in einer neuen Zeile, muss der Code in Zeile 5 zuerst in Integer umgewandelt werden, bevor die intValue() -Methode verwendet wird, weil sie als Objekt betrachtet wird, wenn Sie die Methode get() verwenden. –
GNU Trove dies unterstützen, aber nicht die Verwendung von Generika . http://trove4j.sourceforge.net/javadocs/gnu/trove/TObjectIntHashMap.html
Sie können Referenztypen in generischen Argumenten verwenden, nicht in primitiven Typen. Also hier sollten Sie
Map<String, Integer> myMap = new HashMap<String, Integer>();
und Wert als
myMap.put("abc", 5);
Dies beantwortet nicht die Frage – smac89
@ Smac89 Ich glaube nicht, dass dies die Frage auch richtig beantwortet, aber es ist eine Antwort.Also, um richtig damit umzugehen, ist das Ablehnen, nicht das Markieren. –
verwenden Sie nicht primitiven Typen in HashMap
verwenden können. int
oder double
funktionieren nicht. Sie müssen den umschließenden Typ verwenden. für ein Beispiel
Map<String,Integer> m = new HashMap<String,Integer>();
Jetzt sind beide Objekte, so wird dies funktionieren.
- 1. Arraylist <HashMap <String, String >> zu String []
- 2. Get Arraylist <HashMap <String, String >> Werte
- 3. Wie sortiere ich List <HashMap <String, String >> ls in Java?
- 4. HashMap <String, boolean> Kopiere alle Schlüssel in HashMap <String, Integer> und initialisiere Werte auf Null
- 5. Wie filtern "Null" -Werte von HashMap <String, String>?
- 6. String-Schlüssel nicht in HashMap
- 7. Eine HashMap <String, String> kann nicht in eine Schnittstelle umgewandelt werden. Extending Map <String, String>
- 8. Wie String in HashMap in Java konvertieren
- 9. Java HashMap mit verschachtelten String oder Arraylist
- 10. Verwenden von String Array in HashMap, Java
- 11. Wie konvertiert man alle Java-Systemeigenschaften zu HashMap <String, String>?
- 12. Wie ein ein Arraylist speichern <HashMap <String, String >> mit einem einzigen HashMap und mehrere Arraylist
- 13. Sortierung von HashMap String-Werte mit Java 8 Stream funktioniert nicht
- 14. Mybatis resultMap ist HashMap <String, Object>
- 15. Wie wird eine JSON HashMap <String, Object> deserialisiert?
- 16. Java: Vergleichen HashMap <String, Object>, wenn der Wert könnte eine sein Object []
- 17. Java Webdriver HashMap Elementarray
- 18. Suchschlüssel in HashMap <(String, usize), f64> in Rust
- 19. java Reverse hashmap Druck
- 20. Merge Map <String, List <String> Java 8 Stream-
- 21. Java HashMap Key Verwirrende
- 22. java static hashmap Speicherproblem
- 23. Java: wie man HashMap <String, Object> in Array konvertiert
- 24. For-Each-Schleife, Karte <String, Map <String, Liste <String> >>
- 25. Warum ist die maximale Kapazität einer Java HashMap 1 << 30 und nicht 1 << 31?
- 26. java map string string nicht steigend
- 27. Spring Elasticsearch HashMap [String, String] Mapping Wert kann nicht not_analyzed
- 28. Java8: HashMap <X, Y> Hashmap <X, Z> mit Strom/Map-Reduce/Collector
- 29. Verwenden <c:forEach> mit HashMap
- 30. Wie überprüft man die Werte in HashMap <String, String> und setBackgroundResource, wenn record = value?
Ihre Wortwahl für Ihre Frage ist verwirrend, können Sie klären? Und genau was nicht funktioniert, können Sie den Code posten? –
@aforloney - eindeutig ist dies ein Kompilierungsfehler. –