문제

두 가지를 구현하는 수업이 있는지 궁금합니다. Map 그리고 List 자바의 인터페이스.

주로 a Map. 나는 문자열 (IDS)을 맵핑한다 Image에스. 그러나 내 코드의 특정 부분에서는 사용 가능한 모든 ID를 사용자에게 제시해야합니다. Images. 지금까지 그렇게하는 유일한 방법은 이것을 작성하는 것입니다.

for (String id : myMap.keySet()) {
    // get the image like this "myMap.get(id)" 
}

그래서 둘 다를 구현하는 수업이 있으면 좋을 것입니다. Map 그리고 List 그래서 나는 단순히 쓸 수 있습니다.

for (Image img : myMap) {
  // the image is img
}

그러한 구현을 아는 사람이 있습니까?

편집하다: 답을 본 후 (모두 정확하고 투표), 이제는지도를 정렬해야한다는 것을 알고 있습니다. 내가 "정렬 된"이라고 말할 때, 내 말은, 내가 수정할 수있는 특정 순서로 값을 갖기를 원한다는 것입니다. 나는 이것이 원래의 질문이 아니라는 것을 알고 있지만, 나는 그것을 필요로한다는 것을 깨달았습니다.

편집 2: 내가 결정적이지 않은 것 같습니다. 내가 필요로하는 것은 정렬 된지도가 아니라 정렬 된지도입니다. 혼란에 대해 죄송합니다, 사람들.

도움이 되었습니까?

해결책

특정 순서로 품목이 필요한 경우 LinkedHashmap 친구입니다. 항목을 삽입 순서로 유지합니다. Treemap은 귀하가 제공하는 비교기 또는 키의 비교 방법에 의해 정의 된 순서로 항목을 유지합니다.

다른 팁

주문한지도의 경우 LinkedHashMap. 그것은 당신의 키를 삽입 순서대로 유지합니다.

사용하는 경우 a SortedMap 키를 정렬 된 순서로 유지합니다. (그만큼 TreeMap 가장 일반적인 구현입니다.)

당신이 사용할 수있는 것은입니다 map.entrySet(). 그것은 당신이 당신이 한 세트를 반복 할 수있게 해줄 것입니다.

확인하십시오 Javadoc 조금 더 많은 정보를 얻으려면.

당신은 이미 많은 실용적인 답변을 가지고 있습니다. 그러나 직접 질문에 대답합니다 ...

Java의지도와 목록 인터페이스를 모두 구현하는 수업이 있다면 방황하고있었습니다.

... 단순히 불가능하다는 것을 언급 할 가치가 있습니다. remove(Object) 방법은 장애물입니다.

~ 안에 Map 서명은 다음과 같습니다.

V remove(Object key);

그리고에서 List 인터페이스는 다음과 같습니다.

boolean remove(Object o);

당신은 사용할 수 있습니다 Map.values() a Collection.

이것은 당신에게 저장된 값의 모음을 제공합니다

myMap.values()

이 시도:

for (Image img : myMap.values()) {
    // the image is img
}

정렬 된 맵의 경우보십시오 java.util.SortedMap 구현. java.util.TreeMap 가장 자주 선택입니다. 반복 순서를 보장하기 만하면 시도해 볼 수 있습니다. java.util.LinkedHashMap. 요소를 매핑하는 것과 동일한 순서로 반복을 제공합니다. 또는 선택적으로, 마지막으로 액세스 된 순서로. 키를 맵 끝으로 이동하려면 (한 번 추가) 이동하려면 명시 적으로 제거하고 다시 넣어야합니다.

당신은 a를 사용할 수 있습니다 트리 맵 키의 자연 순서에 따라 또는지도 생성 시간에 제공된 비교기에 따라 정렬됩니다.

TreeMap<String, Image> mapByName = new TreeMap<String, Image>(new ByNameComparator());

BynameComparator ()는 비교기입니다. 또는 Collections.sort ()를 사용하여 값 () Methond를 사용하고 정렬 할 수 있습니다.

Collection<Image> images = mapByName.values();
Collections.sort(images, new BySizeComparator());
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top