비교기 인터페이스를 사용하여 TreeMap (Double 값 및 정수 값으로 있음) 정렬하려면 노력하고 있지만 작동하지 않습니다. 다음지도에서 Java 정렬 작동하지 않습니다
는// Create a tree map
TreeMap tm = new TreeMap();
// Put elements to the map
tm.put(1, new Double(3434.34));
tm.put(0, new Double(123.22));
tm.put(4, new Double(1378.00));
tm.put(2, new Double(99.22));
tm.put(3, new Double(-19.08));
List<Map.Entry> valueList = new ArrayList(tm.entrySet());
// Collections.sort(valueList, new Sort());
Collections.sort(valueList, new Sort());
HashMap sortedMap = new HashMap();
// Get an iterator
Iterator<Map.Entry> i = valueList.iterator();
// Display elements
while (i.hasNext()) {
Map.Entry object = i.next();
sortedMap.put(object.getKey(), object.getValue());
}
List sortedList = new ArrayList(sortedMap.entrySet());
Iterator<Map.Entry> iterator = sortedList.iterator();
while (iterator.hasNext()) {
Map.Entry entry = iterator.next();
System.out.println("Value " + entry.getValue() + "\n");
}
내 비교기 클래스
public class Sort implements Comparator<Map.Entry> {
@Override
public int compare(Map.Entry o1, Map.Entry o2) {
// TODO Auto-generated method stub
double valueOne = (Double) o1.getValue();
double valueTwo = (Double) o2.getValue();
int returnValue =
valueOne > valueTwo ? -1 : (valueOne == valueTwo ? 0 : 1);
return (valueOne > valueTwo ? -1 : (valueOne == valueTwo ? 0 : 1));
}
}
입니다하지만 난
Value 123.22
Value 3434.34
Value 99.22
Value -19.08
Value 1378.0
Edited Part
public int compare(Map.Entry o1, Map.Entry o2) {
// TODO Auto-generated method stub
double valueOne = ((Double) o1.getValue()).doubleValue();
double valueTwo = ((Double) o2.getValue()).doubleValue();
int returnValue =
valueOne > valueTwo ? -1 : (valueOne == valueTwo ? 0 : 1);
return (valueOne > valueTwo ? -1 : (valueOne == valueTwo ? 0 : 1));
}
는 대신,'=='기호로 두 값을 비교하는 비교해서는 안되는 '>'와'<', 아무도 값을 반환하지 않으면 0을 반환합니다. –
빠른 대답을 부탁드립니다. 더블 클래스에서 doubleValue() 메서드를 사용하여 값을 double로 변경했지만 여전히 정렬되지 않습니다. 내 편집 된 부분을 참조하십시오. – Dilip
JDK에는 값으로 정렬 할 수있는'Map' 구현체가 없습니다. –