2012-04-06 2 views
1

웹 (및 Stackoverflow)을 많이 검색했지만 찾고있는 것을 정확히 찾을 수 없습니다. 또한 개념을 이해하지 못했습니다.Java에서 TreeMap 즐기기

Java 할당으로서 treeMap에 값을 저장하고 있습니다.

static Map<String, Double> customers = new TreeMap<String, Double>(); 

자연스럽게 오름차순으로 문자열 값을 저장합니다. 하지만 그 값을 Double 값으로 오름차순으로 저장하고 싶습니다. 비교 자에 의해 어떻게 이것을 할 수 있습니까? 세부 사항은 높이 평가 될 것입니다.

또한이 과제에서 다른 값을 저장하는 또 다른 별도의 treeMap이 있습니다. 다음과 같이 다시 선언하십시오 :

static Map<String, Double> customers = new TreeMap<String, Double>(); 

String 값으로 오름차순 값을 저장하는 것이 좋습니다. 나는 값을 출력하기 위해 이것을 사용하고 있지만 Double로 정렬 된 오름차순으로 값을 출력해야한다. 그래서 어떻게 트리 맵을 다시 정렬 할 수 있습니까? 다시, 세부 사항은 매우 높이 평가 될 것이다.

+0

없이 내장 된지도 구현하는 정렬을가하게됩니다된다 값. 없음. –

답변

2

TreeMap을 다시 정렬 할 수 없습니다. 그것은 고정 된 반복 명령을 가지고 있으며, TreeMap 생성 시간으로 결정됩니다. 다른 정렬 순서를 원하면 다른 데이터 구조를 사용하십시오.

저는이 값을 출력하기 위해이 값을 사용하고 있지만, Double 값에 따라 오름차순으로 값을 출력해야합니다.

따라서 TreeMap을 정렬하는 것에 대해 걱정할 필요가 없습니다. 지도에 값 중 List<Double>을 만들고 정렬합니다.

List<Double> values = new ArrayList<Double>(customers.values()); 
Collections.sort(values); 
System.out.println(values); 
+0

우아한 솔루션이지만 TreeMap을 사용해야합니다. 어쨌든 고마워. : D –

+0

'TreeMap'을 사용할 수 없다고 말하지 않았습니다. 추가 작업을 수행하지 않고 정렬 된 값을 인쇄 할 수 없습니다. –

1

다른지도 확인 :

Map<Double, String> values = new TreeMap<Double, String>(); 

을 항상 (예를 들어 도우미 방법을 통해) 모두지도에 추가 할 수 있습니다. 메모리 제약이없는 한 customers지도는 고객별로 정렬되고 valuesDouble 값이 나타내는 값으로 정렬됩니다.

중복 값을 가질 수 있다면, 당신은 대신에 고객의 (요구 사항에 따라 또는 집합) 목록을 만들 수 있습니다

Map<Double, List<String>> values = new TreeMap<Double, List<String>>(); 
+0

@ MДΓΓLLLLLL 나는 모른다. 그래서 나는 "할 수 있다면"이라고 말한 것이다. Set은 도움이됩니다. -이 값은 (Double) value, (String)에 의해 중복 된 값입니다. 그렇지 않으면 첫 번째지도가 쓸모 없게됩니다 (즉, 일부 고객은 덮어 쓰게됩니다). –

+0

OP의'customers' 맵의 역으로'Map > '을 사용하고 있다는 것을 알았 기 때문에 제 의견을 삭제했습니다. 죄송합니다! –

+0

@ MДΓΓLLLLLL 걱정하지 마십시오. –