Java에는 키 / 값 쌍을 저장하고 액세스하기위한 맵처럼 작동하지만 키 및 값 목록이 동일한 순서로 정렬 된 키 목록과 정렬 된 값 목록을 리턴 할 수있는 오브젝트가 있습니까?
코드 별 설명으로 가상의 OrderedMap처럼 동작하는 것을 찾고 있습니다.
OrderedMap<Integer, String> om = new OrderedMap<>();
om.put(0, "Zero");
om.put(7, "Seven");
String o = om.get(7); // o is "Seven"
List<Integer> keys = om.getKeys();
List<String> values = om.getValues();
for(int i = 0; i < keys.size(); i++)
{
Integer key = keys.get(i);
String value = values.get(i);
Assert(om.get(key) == value);
}
답변
의 SortedMap의 (구현과 인터페이스 트리 맵은 ) 당신의 친구가되어야한다.
인터페이스에는 다음과 같은 방법이 있습니다.
따라서이 인터페이스는 요구 사항을 정확하게 충족시킵니다. 그러나 키에는 의미있는 순서가 있어야합니다. 그렇지 않으면 주문이 게재 신청서에 의해 결정되는 LinkedHashMap을 사용할 수 있습니다 .
답변
키 / 값 쌍을 저장하고 액세스하는 맵처럼 작동하지만 정렬 된 키 목록과 정렬 된 값 목록을 반환하여 키와 값 목록의 순서가 같은 객체가 있습니까?
당신은 java.util.LinkedHashMap을 찾고 있습니다. 항상 같은 순서로 반복되는 Map.Entry <K, V> 쌍 목록이 표시 됩니다. 순서는 항목을 넣는 순서와 동일합니다. 또는 java.util.SortedMap을 사용하십시오. 여기서 키는 자연 순서를 갖거나로 지정해야합니다 Comparator
.
답변
LinkedHashMap은 키의 순서를 유지합니다.
java.util.LinkedHashMap은 일반 HashMap과 동일하게 작동하는 것으로 보입니다.
답변
프레임 워크에서 얻을 수있는 가장 가까운 컬렉션은 SortedMap 이라고 생각합니다.
답변
오름차순 또는 내림차순으로 액세스하고 탐색 할 수있는 NavigableMap 인터페이스를 활용할 수 있습니다 . 이 인터페이스는 SortedMap 인터페이스 를 대체하기위한 것 입니다. 탐색 가능한지도는 일반적으로 키의 자연 순서에 따라 또는지도를 만들 때 제공되는 비교기로 정렬됩니다.
가장 유용한 3 가지 구현이 있습니다 : TreeMap , ImmutableSortedMap 및 ConcurrentSkipListMap 입니다.
TreeMap 예 :
TreeMap<String, Integer> users = new TreeMap<String, Integer>();
users.put("Bob", 1);
users.put("Alice", 2);
users.put("John", 3);
for (String key: users.keySet()) {
System.out.println(key + " (ID = "+ users.get(key) + ")");
}
산출:
Alice (ID = 2)
Bob (ID = 1)
John (ID = 3)
답변
SortedMap 인터페이스가 요청한 것을 강제하고 TreeMap이 구현한다고 생각합니다.
http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html
http://java.sun.com/j2se/1.5.0/docs/api/java/util /TreeMap.html