HashMap<String, int>
dường như không hoạt động nhưng HashMap<String, Integer>
không hoạt động. Mọi ý tưởng tại sao?java: HashMap <String, int> không hoạt động
Trả lời
Bạn không thể sử dụng các kiểu nguyên thủy làm đối số chung trong Java. Sử dụng thay thế:
Map<String, Integer> myMap = new HashMap<String, Integer>();
Với auto-boxing/unboxing có sự khác biệt nhỏ trong mã. Auto-boxing có nghĩa là bạn có thể viết:
myMap.put("foo", 3);
thay vì:
myMap.put("foo", new Integer(3));
Auto-boxing có nghĩa là phiên bản đầu tiên được ngầm chuyển đổi sang thứ hai. Auto-unboxing có nghĩa là bạn có thể viết:
int i = myMap.get("foo");
thay vì:
int i = myMap.get("foo").intValue();
Cuộc gọi ngầm để intValue()
có nghĩa là nếu phím không tìm thấy nó sẽ tạo ra một NullPointerException
, ví dụ:
int i = myMap.get("bar"); // NullPointerException
Lý do là type erasure. Không giống như, nói rằng, trong các kiểu chung C# không được giữ lại trong thời gian chạy. Họ chỉ là "cú pháp đường" cho đúc rõ ràng để giúp bạn tiết kiệm làm điều này:
Integer i = (Integer)myMap.get("foo");
Để cung cấp cho bạn một ví dụ, mã này là hoàn toàn hợp pháp:
Map<String, Integer> myMap = new HashMap<String, Integer>();
Map<Integer, String> map2 = (Map<Integer, String>)myMap;
map2.put(3, "foo");
Ví dụ cuối cùng của bạn không hoạt động: Không thể truyền từ Map
Tại sao nó không hoạt động với 'Float' và' Double'? –
xem xét từng mã riêng biệt trong một dòng mới, mã trên dòng 5 trước tiên phải được đúc thành Số nguyên trước khi sử dụng phương thức intValue() vì nó được coi là đối tượng khi bạn sử dụng phương thức get(). –
GNU trove hỗ trợ này, nhưng không sử dụng Generics . http://trove4j.sourceforge.net/javadocs/gnu/trove/TObjectIntHashMap.html
Bạn có thể sử dụng loại tham chiếu trong đối số chung, không phải kiểu nguyên thủy. Vì vậy, ở đây bạn nên sử dụng
Map<String, Integer> myMap = new HashMap<String, Integer>();
và giá trị lưu trữ như
myMap.put("abc", 5);
Điều này không trả lời câu hỏi – smac89
@ Smac89 Tôi không nghĩ rằng điều này cũng trả lời đúng câu hỏi, nhưng đó là câu trả lời.Vì vậy, để cách thích hợp để đối phó với điều này là downvoting, không gắn cờ. –
Bạn không thể sử dụng các kiểu dữ liệu trong HashMap
. int
hoặc double
không hoạt động. Bạn phải sử dụng kiểu kèm theo của nó. ví dụ:
Map<String,Integer> m = new HashMap<String,Integer>();
Bây giờ, cả hai đều là đối tượng, vì vậy việc này sẽ hoạt động.
- 1. ArrayList <HashMap <String, String >> để String []
- 2. không hoạt động nhanh của java HashMap
- 3. Làm thế nào để lặp lại Arraylist <HashMap <String, String >>?
- 4. Làm thế nào để chuyển đổi tất cả các thuộc tính hệ thống Java thành HashMap <String, String>?
- 5. Không thể truyền một HashMap <String, String> đến một Giao diện mở rộng Bản đồ <String, String>
- 6. Java Generics đặt trên Bản đồ <String,? mở rộng Danh sách <String>>
- 7. Java: Enumeration từ Set <String>
- 8. Kiểm tra xem Object có phải là instance của String, HashMap hay HashMap []
- 9. Danh sách thả xuống với từ điển <string, string> không hoạt động với giá trị được chọn
- 10. StringDictionary vs Dictionary <string, string>
- 11. Liệu std :: nguyên tử <std::string> có hoạt động phù hợp không?
- 12. JAX-RS, Bản đồ <String, String> đến JSON mà không có phí trên không?
- 13. Danh sách <String> cho ArrayList <String> vấn đề chuyển đổi
- 14. Tại sao tôi không thể tạo từ điển <string, dictionary <string, string >>?
- 15. Có <String> làm gì không?
- 16. Sử dụng <c:forEach> với HashMap
- 17. Tùy chỉnh hashcode/bằng hoạt động cho HashMap
- 18. IDictionary <string, string> so với Dictionary <string, string>
- 19. C# Chuyển đổi Danh sách <string> thành Từ điển <string, string>
- 20. Phương pháp managedQuery (Uri, String [], String, String [], String) từ Hoạt động loại bị phản
- 21. Làm thế nào để làm cho java HashMap hoạt động đúng với loại khóa tùy chỉnh?
- 22. setDragImage không hoạt động - Java 7
- 23. Java HashMap vs JSONObject
- 24. Tại sao String (null) hoạt động?
- 25. Deserialize KeyValuePair <string, string> Json.Net
- 26. Object <String> có ý nghĩa gì trong Java?
- 27. IDictionary <string, string> hoặc NameValueCollection
- 28. java hashmap key iteration
- 29. SplObjectStorage không hoạt động với String, phải làm gì?
- 30. toUpperCase trong Java không hoạt động
lựa chọn các từ cho câu hỏi của bạn là khó hiểu, bạn có thể làm rõ không? Và chính xác những gì không hoạt động, bạn có thể đăng mã không? –
@aforloney - rõ ràng đây là lỗi biên dịch. –