对字符串数组 进行排序

        String[] x = {"nba","abc","cba","zz","qq","haha"};

        //自己写的排序
        // 排序的方法 直接用的冒泡排序    以前都是比较数字  直接用 >  <  =  就好了    但是 字符串的比较怎么办?  用String类提供的compareTo 方法就可以了
        for(int i=0;i<x.length;i++){
            for(int j=0;j<x.length-1-i;j++){
                if(x[j].compareTo(x[j+1])>0){
                    String tem = x[j];
                    x[j] = x[j+1];
                    x[j+1] = tem;
                }
            }
        }


        //使用java提供的方法进行排序
        //默认升序
        Arrays.sort(x);
        //写个比较器  变为降序排列
        Arrays.sort(x,new MyComprator());

        System.out.println(Arrays.toString(x));


class MyComprator implements Comparator {
        @Override
        public int compare(Object o1, Object o2) {
            String t1=(String)o1;
            String t2=(String)o2;
            int x = t1.compareTo(t2);
            return -x;
        }
    }

 在java编程中,我们会偶尔遇到字符串大小比较的问题,compareTo()方法很简单就实现这种功能。该方法用于判断一个字符串是大于、等于还是小于另一个字符串。判断字符串大小的依据是根据它们在字典中的顺序决定的。

    语法:Str1.compareTo(Str2);
 

    其返回的是一个int类型值。若Str1等于参数字符串Str2字符串,则返回0;若该Str1按字典顺序小于参数字符串Str2,则返回值小于0;若Str1按字典顺序大于参数字符串Str2,则返回值大于0。

    java中的compareto方法,返回参与比较的前后两个字符串的asc码的差值,看下面一组代码

    String a="a",b="b";

    System.out.println(a.compareto.b);

    则输出-1;

    若a="a",b="a"则输出0;

    若a="b",b="a"则输出1;

   

   单个字符这样比较,若字符串比较长呢??

   若a="ab",b="b",则输出-1;

   若a="abcdef",b="b"则输出-1;

   也就是说,如果两个字符串首字母不同,则该方法返回首字母的asc码的差值;

  如果首字母相同呢??

  若a="ab",b="a",输出1;

  若a="abcdef",b="a"输出5;

  若a="abcdef",b="abc"输出3;

  若a="abcdef",b="ace"输出-1;

   即参与比较的两个字符串如果首字符相同,则比较下一个字符,直到有不同的为止,返回该不同的字符的asc码差值,如果两个字符串不一样长,可以参与比较的字符又完全一样,则返回两个字符串的长度差值

compareTo 方法参考博客 :  https://blog.csdn.net/ymony/article/details/78289891

猜你喜欢

转载自blog.csdn.net/u013317653/article/details/91366202