카테고리 없음

[자바] string []에 정렬 된 해시 맵의 Sstore 키-값

행복을전해요 2020. 12. 9. 22:43

오타와 해시 맵을 사용하고 있다는 설명에 따라 키 검색 순서가 삽입 순서와 일치하지 않습니다. LinkedHashMap을 사용하십시오. 이것은 외부 정렬을 수행 한 다음 정렬 된 항목을 맵에 삽입하는 것입니다.항목이 맵에 삽입되는 동안 정렬되도록하려면 TreeMap을 사용하십시오. 사용자 정의 비교기를 사용하거나 키 개체가 Comparable 인터페이스를 구현하도록 할 수 있습니다.-------------------
HashMap은 key.hashValue ()를 사용하여 값을 정렬합니다. 대신 TreeMap을 사용하십시오.-------------------

값을 기반으로 정렬 된 해시 맵이 있습니다. 값을 기반으로 해시 맵을 정렬했습니다.

아니에요. HashMap은 전혀 정렬되지 않습니다. values ​​()를 컬렉션으로 가져올 수 있으며 원하는 방식으로 정렬 할 수 있지만 HashMap 자체를 정렬하지는 않습니다.

그러나이 방법은 작동하지 않았습니다. 무작위 방식으로 키를 저장합니다.

특히 HashMap을 전혀 정렬하지 않았기 때문에 다르게 수행하도록 정의되지 않았습니다.여기서 말하는 내용을 명확히해야합니다. 값을 정렬하려면 위를 수행하십시오. 키를 정렬하려면 '

keys()

대신 위의 작업을 수행하십시오

values()

. 맵 자체를 키로 정렬하려면 TreeMap을 사용하십시오. 값에 따라지도 자체를 정렬하려는 경우 운이 좋지 않습니다.-------------------
이 시도:

public static void main(String[] args) {
    Map<String, String> hm = new TreeMap<String, String>();
        hm.put("AAA", "typeAAA");
            hm.put("BBB", "typeBBB");
                hm.put("ABB", "TypeABB");
                    String[] keys = hm.keySet().toArray(new String[0]);
                        for (String key : keys) {
                                System.out.println("key: " + key);
                                    }
                                    }
                                    

출력은 다음과 같습니다.

key: AAA
key: ABB
key: BBB

-------------------
a의 키 순서가

HashMap

정렬 된 키 목록과 동일 하기를 원하는 것 같습니다 . 이것은

단순히 불가능합니다

.

HashMap

의 키는 해시 테이블 알고리즘에 의해 결정된다; 예를 들어 키의 해시 값과 삽입 및 삭제 시퀀스에 의존하는 복잡한 프로세스.가장 가까운 방법은를 만들고 정렬 된 키 순서대로

LinkedHashMap

이전 항목을 삽입하여 채우는 것

HashMap

입니다. 그런 다음

LinkedHashMap

의 키 를 반복 하면 삽입 된 순서대로 다시 가져옵니다. 그러나 이것은 무거운 솔루션이며 나중에 "정렬 된"맵에 더 많은 항목을 추가해야하는 경우 문제가 발생합니다. 단지를 사용하는 것이 좋을 수 있습니다

TreeMap

.


해시 맵을 변경하고 싶지 않습니다. 정렬 된 값의 순서로 키가있는 배열을 얻고 싶습니다.

이 경우 HashMap의 키를 배열로 추출하고 정렬하기 만하면됩니다. 코드는 다른 답변에 제공되었습니다.반면에, 당신이 뭔가를하고 싶은 경우에지도의 키는 항상 당신이 (당신이 다른 의견 말하는 것 같다)에 정렬 된 순서로 나올 수 있도록

하는

맵을 변경.

출처
https://stackoverflow.com/questions/7414976