[java] HashMap-첫 번째 키 값 얻기

다음은 HashMap에 포함 된 값입니다.

statusName {Active=33, Renewals Completed=3, Application=15}

첫 번째 키 (즉, 활성)를 얻기위한 Java 코드

Object myKey = statusName.keySet().toArray()[0];

첫 번째 키 “값”(예 : 33)을 수집하려면 어떻게해야합니까? “키”와 “값”을 별도의 변수에 저장하고 싶습니다.



답변

이것을 시도 할 수 있습니다.

 Map<String,String> map = new HashMap<>();
 Map.Entry<String,String> entry = map.entrySet().iterator().next();
 String key = entry.getKey();
 String value = entry.getValue();

명심 HashMap삽입 순서를 보장하지 않습니다. LinkedHashMap주문을 그대로 유지 하려면 a 를 사용하십시오 .

예 :

 Map<String,String> map = new LinkedHashMap<>();
 map.put("Active","33");
 map.put("Renewals Completed","3");
 map.put("Application","15");
 Map.Entry<String,String> entry = map.entrySet().iterator().next();
 String key= entry.getKey();
 String value=entry.getValue();
 System.out.println(key);
 System.out.println(value);

산출:

 Active
 33


답변

“첫 번째”값을 얻으려면 :

map.values().toArray()[0]

“첫 번째”키의 값을 얻으려면 :

map.get(map.keySet().toArray()[0])

참고 : 위 코드는 테스트를 거쳐 작동합니다.

HashMap 항목이 정렬되지 않았기 때문에 “처음”이라고 말합니다.

그러나 LinkedHashMap은 삽입 된 순서대로 항목을 반복합니다. 삽입 순서가 중요한 경우 맵 구현에 사용할 수 있습니다.


답변

자바 8 방식,

String firstKey = map.keySet().stream().findFirst().get();


답변

첫 번째 항목 전체를 얻기 위해 이것을 시도 할 수도 있습니다.

Map.Entry<String, String> entry = map.entrySet().stream().findFirst().get();
String key = entry.getKey();
String value = entry.getValue();

첫 번째 항목의 키만 가져 오려면

String key = map.entrySet().stream().map(Map.Entry::getKey).findFirst().get();
// or better
String key = map.keySet().stream().findFirst().get();

이것은 첫 번째 항목의 값만 가져옵니다.

String value = map.entrySet().stream().map(Map.Entry::getValue).findFirst().get();
// or better
String value = map.values().stream().findFirst().get();

또한, 당신이 무엇을하는지 알고 있고 맵의 두 번째 항목 (세 번째 항목과 동일)을 얻고 싶다면 이것을 시도해야합니다.

Map.Entry<String, String> entry = map.entrySet().stream().skip(1).findFirst().get();
String key = map.keySet().stream().skip(1).findFirst().get();
String value = map.values().stream().skip(1).findFirst().get();


답변

첫 번째 키 “값”(예 : 33)을 수집하는 방법

를 사용 youMap.get(keyYouHave)하면 그 가치를 얻을 수 있습니다.

“키”와 “값”을 별도의 변수에 저장하려는 경우

예, 변수에 할당 할 수 있습니다.

잠깐만 ……… 끝나지 않았습니다.

당신 (비즈니스 로직)이 삽입 및 검색 순서에 의존한다면 이상한 결과를 보게 될 것입니다. 지도는 주문되지 않으며 주문에 저장되지 않습니다. 그 사실에 유의하십시오. 주문을 보존하려면 다른 방법을 사용하십시오. 아마LinkedHashMap


답변

논리 흐름 HashMap이 어떤 순서로 요소 에 액세스하는 데 의존해서는 안된다는 점에 유의해야합니다. HashMaps는 순서가 지정되지 않았고 Collections가 의도 한 것이 아니기 때문입니다. ( 이 게시물 에서 odered 및 sorter 컬렉션에 대해 자세히 읽을 수 있습니다 ).

게시물로 돌아가서 첫 번째 요소 키를로드하여 이미 절반의 작업을 수행했습니다.

Object myKey = statusName.keySet().toArray()[0];

map.get(key)해당 값을 얻으려면 호출 하십시오.

Object myValue = statusName.get(myKey);


답변

일반적으로지도에서는 ​​게재 신청서가 존중되지 않습니다. 이 시도 :

    /**
     * Get the first element of a map. A map doesn't guarantee the insertion order
     * @param map
     * @param <E>
     * @param <K>
     * @return
     */
    public static <E,K> K getFirstKeyValue(Map<E,K> map){
        K value = null;
        if(map != null && map.size() > 0){
            Map.Entry<E,K> entry =  map.entrySet().iterator().next();
            if(entry != null)
                value = entry.getValue();
        }
        return  value;
    }

나는 그것을 확신 할 때만 이것을 사용한다 map.size() == 1.