HashMap<String, int>
작동하지가 작동하지 않고 HashMap<String, Integer>
이 작업을 수행합니다. 이유가 무엇입니까?자바 : HashMap의 <String, int>
답변
Java에서 기본 유형으로 원시 유형을 사용할 수 없습니다. 대신 사용하여 코드에 약간의 차이가 auto-boxing/unboxing와
Map<String, Integer> myMap = new HashMap<String, Integer>();
. 자동 복싱은 당신이 쓸 수있는 의미 대신
myMap.put("foo", 3);
을 :
myMap.put("foo", new Integer(3));
자동 권투는 첫 번째 버전은 암시 적으로 두 번째로 변환을 의미합니다.
int i = myMap.get("foo");
대신 : 자동 언 박싱 당신이 쓸 수있는 의미
int i = myMap.get("foo").intValue();
intValue()
에 대한 암시 적 호출은 의미 키는 예를 들어,이 NullPointerException
생성 발견되지 않는 경우 :
int i = myMap.get("bar"); // NullPointerException
이유는 type erasure입니다. 말하자면 C#에서는 제네릭 형식이 런타임에 유지되지 않습니다. 그들은 명시 적으로 캐스팅 단지 "문법 설탕"당신이이 일에 저장하기 :
Map<String, Integer> myMap = new HashMap<String, Integer>();
Map<Integer, String> map2 = (Map<Integer, String>)myMap;
map2.put(3, "foo");
마지막 예제가 작동하지 않습니다. Map
Float 및 Double에서 작동하지 않는 이유는 무엇입니까? –
새 행의 각 개별 코드를 고려할 때 get() 메서드를 사용할 때 객체로 간주되므로 intValue() 메서드를 사용하기 전에 먼저 5 행의 코드를 Integer로 형변환해야합니다. –
GNU Trove를이이 기능을 지원하지만, 제네릭을 사용하지 :
Integer i = (Integer)myMap.get("foo");
당신에게 예를 제공하기 위해이 코드는 완벽하게 합법적이다 . http://trove4j.sourceforge.net/javadocs/gnu/trove/TObjectIntHashMap.html
당신은 일반적인 인수, 원시적 형태가 아닌에서 참조 유형을 사용할 수 있습니다. 그래서 여기 당신은 HashMap
의 기본 형식을 사용할 수 없습니다
myMap.put("abc", 5);
이 질문에 대답하지 않습니다 – smac89
@ Smac89이 질문에 올바르게 대답하지 않는다고 생각하지만 답변입니다.그래서 이것을 다루는 적절한 방법은 하향 투표하는 것입니다. –
로
Map<String, Integer> myMap = new HashMap<String, Integer>();
저장 값을 사용해야합니다. int
또는 double
이 작동하지 않습니다. 그 묶음 타입을 사용해야합니다. 예를 들어
Map<String,Integer> m = new HashMap<String,Integer>();
이제 두 가지 모두 개체이므로 작동합니다.
- 1. 는 HashMap의 문제 (자바)
- 2. 변환 목록의 ArrayList에 <ScanResults><HashMap의 <String>>
- 3. 자바 : 2 목록을 합치다 <String[]>
- 4. System.Collections.Generic.Dictionary <string, string>
- 5. <String> to String
- 6. 자바 - 다시 불리는 것 : <String><>
- 7. HashMap의 성능과 우위
- 8. Java/Android - 검색 ArrayList <HashMap <String, String> - 키와 일치하는 값 -> 값
- 9. HashMap <String, String> temp = 새 HashMap <String, String>(); 패스 이미지
- 10. IDictionary <string, IDictionary <string, ICollection <string> >> LINQ
- 11. <String, String>은 무엇을 의미합니까?
- 12. StringDictionary 대 사전 <string, string>
- 13. HashSet <String>에서 String []
- 14. String to ArrayList <String>
- 15. POJO에서지도 <String, String>을 생성하십시오.
- 16. IDictionary <string, string> 또는 NameValueCollection
- 17. JPA Map <String, String> mapping
- 18. 사전을 포함한 <string, string> 사전
- 19. JAXB to unmarshall <string> foobar</string>
- 20. List <KeyValuePair <string, string >>
- 21. 문자열은 HashMap의 키로 사용
- 22. 문제는 <String>
- 23. 콜렉션 <String>
- 24. 는 <String>
- 25. HashMap의 List에 추가하기위한 단축키
- 26. 자바 컴파일러가 HashMap의 값 형식으로 primitive를 사용하지 않는 이유는 무엇입니까?
- 27. Map <String, string>의 string []을 얻는 방법
- 28. serialize 된 구문 분석 중 <string, string> jquery
- 29. IDictionary <string, object>를 IDictionary <string, string>으로 변환하는 우아한 방법은 무엇입니까
- 30. <string> 벡터에 값이 없는지 확인하려고합니다. <string, string>
질문에 대한 단어 선택이 혼란 스럽습니까? 명확히 할 수 있습니까? 정확히 작동하지 않는 코드는 게시 할 수 있습니까? –
@aforloney - 이것은 컴파일 오류입니다. –