日期:2014-05-20  浏览次数:20658 次

String 的compareTo方法
public class TreeMapDemo {
 public static void main(String[] args) {
  TreeMap tm = new TreeMap(new MyComparator());
  tm.put("A", 12);
  tm.put("C", 13);
  tm.put("B",14);
  tm.put("D", 15);
  System.out.println(tm);  
 }
}
class MyComparator implements Comparator{
 public int compare(Object o1, Object o2) {
   String aStr = (String) o1;
   String bStr = (String) o2;
  return bStr.compareTo(aStr);
 }
}
上述代码的运行结果是:

A.{A=12, C=13, B=14, D=15}

B.{D=15, B=14, C=13, A=12}

C.{D=15, C=13, B=14, A=12}

D.{A=12, B=14, C=13, D=15}

正确答案:C

有点纳闷,为什么是C而不是D呢?望知道的朋友给个解释吧。
string object

------解决方案--------------------
你这构造器比的是A,B,C,D
而不是表示12,13,14,15
你这里改一下就知道了:
public int compare(Object o1, Object o2) {
String aStr = (String) o1;
String bStr = (String) o2;
int compareTo = bStr.compareTo(aStr);
System.out.println(aStr);
System.out.println(bStr);
System.out.println(compareTo);
return compareTo;
}
结果部分片段:
C
A
-2

------解决方案--------------------


引用:
Quote: 引用:

说明TreeMap是根据key值降序排列啊

为什么不是升序呢?

这你得去问sun公司