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.youkuaiyun.com/ymony/article/details/78289891