本帖最后由 surongr 于 2012-07-09 02:45:37 编辑

解决方案 »

  1.   

    这是必须的, __9_7_Person这个只是一个comparator比较器,而Arrays.sort 是对 comparable 类进行排序的。
    你把概念搞混淆了,应该实现 comparable 接口,重写 compareTo()方法
      

  2.   

    是继承Comparable接口
    并重写compareTo方法
      

  3.   

    接口comparator是比较器,Comparable才能实现自然比较
    另外类名最好不要以下划线开头
      

  4.   

    3楼说得对。你把comparator和Comparable搅浑了。
      

  5.   

    可是以前写了一个实现Comparator<String>的 后来也用了 Arrays.sort 对一个 String[] 排序
      

  6.   

    String 已经实现了comparable 接口
      

  7.   

    关于Arrays.sort(Object[])其实可以按照指定的排序规则进行排序,默认情况下按照自然顺序(即对象实现了compareble接口,Arrays回调compareble的compare方法进行排序),但是Arrays也支持用户指定比较规则进行排序,就是sort(T[] a, Comparator<? super T> c)这个静态方法(详见API)
    修改了了下楼主的代码如下:package sortutil.test;
    import java.util.Arrays;
    import java.util.Comparator;
    public class __9_7_Person implements Comparator<__9_7_Person> {
        private int height;
        private int weight;
        public __9_7_Person(int height, int weight) {
            this.height = height;
            this.weight = weight;
        }
        public int compare(__9_7_Person p1, __9_7_Person p2) {
            if (p1.height != p2.height) {
                return p1.height - p2.height;
            }
            else {
                return p1.weight - p2.weight;
            }
        }
        public String toString(){
         return "\nHeigth:"+height +"||"+"Weight:"+weight;
        }
        public static void main(String[] args) {
         __9_7_Person[] p = {new __9_7_Person(60, 100),
                    new __9_7_Person(70, 150),
                    new __9_7_Person(56, 90),
                    new __9_7_Person(75, 190),
                    new __9_7_Person(60, 95),
                    new __9_7_Person(68, 110),
         };
         Arrays.sort(p,new __9_7_Person(0,0));//new __9_7_Person(0,0)被转成comparator
         System.out.println(Arrays.toString(p));
        }
    }楼主注意Java命名规则,虽无强制,但遵循好处多多
      

  8.   

    _9_7_Person这个只是一个comparator比较器,而Arrays.sort 是对 comparable 类进行排序的。
    你把概念搞混淆了,应该实现 comparable 接口,重写 compareTo()方法