有数组String[]str={"aa","b","cccc","ddd",}用Comparator中的 int compare(T o1, T o2)方法使其输出结果是:b
aa
ddd
cccc
这个方法我以前不经常用  
不知道如何用这个方法去实现   我想要的结果,大家集思广益 想一下怎样实现
或者 有用到这个方法的例子拿出来 请大家都学习学习

解决方案 »

  1.   

    用来做一下List的排序不错的例如:一个POJO对象user 你可以 implements Comparable<user>
    Name是user对象的1个属性
    然后用compareTo(user o){
     return this.getName().compareTo(o.getName());
    }
    最后你通过条件取出来的list(userlist)对他进行Name的排序
    Collections.sort(userlist);
      

  2.   

    import java.util.Arrays;
    import java.util.Comparator;
    public class ComparatorTest1{
    public static void main(String[]args){
    String[]str={"a","bbc","ab","cddvv"};
    Arrays.sort(
    str, new Comparator<String>(){
    public int compare(String s1, String s2){

    return s1.length()-s2.length();//为什么要这样写,不明白 }
    }

    );

    for(int i=0; i < str.length; i++){
    System.out.println(str[i]);
    }
    }
    }return s1.length()-s2.length();  不明白为什么要这样写懂的  帮忙解释一下  谢谢啦
      

  3.   


    s1,s2循环来自str,我猜测应该是sort()的内部实现.
    return s1.length()-s2.length();如果返回负数,compare(String s1, String s2)得到s1<s2,也就是返回-1.然后Arrays.sort就根据从小到大(字符串长度从短到长)排序了...个人愚见.抛砖引玉了
      

  4.   

    sort排序依靠compare出来的结果,
    s1.length()-s2.length()<0 s1就<s2. 相当于把字符串当做数字来看
    然后compare已经有结果了,就是s1<s2,sort就知道了.以此类推
      

  5.   

    import java.util.*;
    public class ComparatorTest2 {
    public static void main(String[] args) {

    String[] str={"aa","b","cccc","ddd"};

    Vector v = new Vector();
    for(int i=0;i<str.length;i++)
    {
    v.add(str[i]);

    }
    Collections.sort(v, new Comp());
    System.out.println(v);
    }
    }class Comp implements Comparator{  public int compare(Object o1, Object o2) {
      int i1 = ((String)o1).length();
      int i2 = ((String)o2).length();
      if (i1 < i2){
       return -1;
      }
      if (i1 > i2){
       return 1;
      }
      return 0;
     }
    }