programing

java: 해시맵이 작동하지 않음

goodcopy 2022. 10. 7. 21:36
반응형

java: 해시맵이 작동하지 않음

HashMap<String, int>하지 않는 것 , 동작하지 않는 것 같습니다.HashMap<String, Integer> 그런지 왜왜런 런아?

Java에서는 기본 유형을 일반 인수로 사용할 수 없습니다.대신 사용:

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

이유는 유형 삭제입니다.예를 들어 C#에서는 범용 타입이 런타임에 유지되지 않습니다.그들은 단지 당신이 이것을 하는 것을 돕기 위해 명시적인 캐스팅을 위한 "통사적인 설탕"일 뿐이다.

Integer i = (Integer)myMap.get("foo");

예를 들어, 이 코드는 완전히 합법적입니다.

Map<String, Integer> myMap = new HashMap<String, Integer>();
Map<Integer, String> map2 = (Map<Integer, String>)myMap;
map2.put(3, "foo");

GNU Trove는 이를 지원하지만 제네릭을 사용하지 않습니다.http://trove4j.sourceforge.net/javadocs/gnu/trove/TObjectIntHashMap.html

할 수 .HashMapint , 「」double작동하지 않습니다. 들면

Map<String,Integer> m = new HashMap<String,Integer>();

둘 다 객체이기 때문에 이 방법이 효과적입니다.

int는 원시형입니다.여기서 Java에서 원시형의 의미를 읽을 수 있습니다.Map은 입력으로 오브젝트에 대한 인터페이스입니다.

public interface Map<K extends Object, V extends Object>

object는 클래스를 의미하며 이 클래스에서 확장되는 다른 클래스를 만들 수 있지만 int에서 확장되는 클래스는 만들 수 없음을 의미합니다.따라서 int 변수를 개체로 사용할 수 없습니다.귀사의 문제에 대한 두 가지 해결 방법이 있습니다.

Map<String, Integer> map = new HashMap<>();

또는

Map<String, int[]> map = new HashMap<>();
int x = 1;

//put x in map
int[] x_ = new int[]{x};
map.put("x", x_);

//get the value of x
int y = map.get("x")[0];

기본 유형이 아닌 일반 인수에서 참조 유형을 사용할 수 있습니다.그래서 여기에서는

Map<String, Integer> myMap = new HashMap<String, Integer>();

로서 가치를 저장하다

myMap.put("abc", 5);

언급URL : https://stackoverflow.com/questions/1780385/java-hashmapstring-int-not-working

반응형