태그 보관물: java

java

키 이름에 따라 HashMap에서 문자열 값 가져 오기

나는이 HashMap내가 하나 개의 값을 얻을 수있는 방법, 다양한 키와 값?

맵에라는 키 my_code가 있습니다. 문자열을 포함해야합니다. 맵을 반복 할 필요없이 어떻게 얻을 수 있습니까?

지금까지 ..

   HashMap newMap = new HashMap(paramMap);
   String s = newMap.get("my_code").toString();

String“ABC”또는 “DEF”와 같은 을 볼 것으로 예상하고 있는데 처음에 입력 한 것이지만, System.out.println()이렇게하면 다음과 같은 결과가 나타납니다.java.lang.string#F0454

죄송합니다. 아마도 짐작할 수있는지도에 익숙하지 않습니다.)



답변

그냥 사용 Map#get(key)?

Object value = map.get(myCode);

다음은 맵에 대한 자습서이며 유용 할 수 있습니다. http://java.sun.com/docs/books/tutorial/collections/interfaces/map.html .

편집 : 다음과 같이 질문을 편집했습니다.

“ABC”또는 “DEF”와 같은 문자열을 처음에 넣을 것으로 예상하고 있지만 System.out.println ()을 수행하면 java.lang.string # F0454

죄송합니다. 아마도 짐작할 수있는지도에 익숙하지 않습니다.)

당신은의 결과를보고 Object#toString()있습니다. 그러나 이름에 소문자가 포함 된 사용자 지정 구현 java.lang.String을 만들지 않는 한에는 이미 하나가 구현 되어 있어야합니다 . 실제로 사용자 지정 개체 인 경우 원하는 개체에 대해 또는 작업을 수행 할 때마다 “사람이 읽을 수있는 문자열”을 가져 오도록 재정의해야 합니다. 예를 들면 :sjava.lang.stringObject#toString()System.out.println()toString()

@Override
public String toString() {
    return "This is Object X with a property value " + value;
}


답변

키 / 값을 문자열로 저장하는 경우 다음과 같이 작동합니다.

HashMap<String, String> newMap = new HashMap<String, String>();
newMap.put("my_code", "shhh_secret");
String value = newMap.get("my_code");

문제는 HashMap (키 및 값)에 채워지는 항목입니다.


답변

Generics를 사용하고 맵을 다음과 같이 정의 할 경우

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

그런 다음 값을 다음과 같이 가져옵니다.

 String s = map.get("keyStr"); 

map.get ()을 typecast하거나 toString 메서드를 호출하여 String 값을 가져올 필요가 없습니다.


답변

귀하의 질문은 전혀 명확하지 않습니다. 키에는 “이름”이 없습니다. 맵에 관한 한 아무 것도 “호출”되지 않습니다. 단지 키일 뿐이며 다른 키와 비교됩니다. 여러 종류의 키가있는 경우 온전함을 위해 다른 맵에 배치하는 것이 좋습니다.

이것이 도움이되지 않는다면 질문을 명확히 해주십시오. 의미하는 바를 보여주는 코드를 사용하는 것이 좋습니다.


답변

map.get(myCode)


답변

여기서 주목해야 할 중요한 점은 키가 Java에서 사용자 정의 클래스의 객체 인 경우 equals 메서드를 재정의하는 지점으로 만드는 것입니다. HashMap.get (Object key) 메서드는 키 값을 일치시키기 위해 equals 메서드를 사용하기 때문입니다. equals 메소드를 재정의하지 않으면 키의 실제 값이 아닌 단순히 키 참조를 기반으로 값을 찾으려고 시도합니다.이 경우 항상 null을 반환합니다.


답변

HashMap을 다음과 같이 선언했다고 가정합니다.

HashMap<Character,Integer> hs = new HashMap<>();

그러면 map의 key는 Character data type과 int type의 값이됩니다. 이제 key의 type, value type, syntax에 관계없이 key에 해당하는 값을 얻으려면 :-

    char temp = 'a';
    if(hs.containsKey(temp)){
`       int val = hs.get(temp); //val is the value corresponding to key temp
    }

따라서 질문에 따라 키에 해당하는 문자열 값을 얻고 싶습니다.이를 위해 HashMap을 HashMap < “datatype of key”, “datatype of value”hs = new HashMap <> (); 이것을 사용하면 코드가 더 깔끔해지며 기본적으로 hs.get ( “my_code”)의 결과를 문자열로 변환 할 필요가 없습니다. 입력시 값을 문자열로 유지하면 문자열 값을 반환합니다.