java中的字符串排序
要求:对  "abc","fcc","egfd","asd","rtgh","deghk","fcc"字段进⾏排序,要求满⾜其为升序排列同时每个字符串⾥也是升序排列
public class Test {
public static void main(String[] args) {
String[] str  = new String[]{"abc","fcc","egfd","asd","rtgh","deghk","fcc"};
//  ⼀  ,冒泡排序  (思路:先获取字符串数组⾥的每个字符串,然后使⽤toCharArray()⽅法得到这个字符串的char[] 再对char数        //组⾥的元素进⾏对⽐,冒泡排序前⾯⼤的与后⾯交换顺序,再把得到的char数组重新转换为String,存⼊到⼀个新的String        //数组中,然后在整体对新数组中各个字符串使⽤冒泡排序从⽽得到结果)
printArr(stringRank(test(str)));
//    ⼆    使⽤ Arrays.sort(s);⽅法进⾏排序
String[] s = sortChar(str);
Arrays.sort(s);
printArr(s);
}
}
//得到⼀个每个字符串⾥元素已经进⾏过排序的新字符串数组
private static String[] test(String[] str){
String st[] =  st = new String[str.length];
for (int i = 0; i < str.length; i++) {
char[] c =  str[i].toCharArray();
charRank(c);
String s = new String(c);
st[i]  = s;
}
return st;
}
//对字符串⾥元素进⾏排序
private static void charRank(char[] c){
for (int j = 0; j < c.length; j++) {
for (int j2 = 0; j2 < c.length-j-1; j2++) {
if(c[j2]>c[j2+1]){
char len = c[j2];
c[j2] = c[j2+1];
c[j2+1] = len;
}
}
}
}
//对新字符串数组⾥的字符串进⾏排序(升序)字符串⽐较使⽤compareTo()⽅法
//String本⾝并不具备⽐较⼤⼩功能,它的String对象实现了Comparable接⼝,这个接⼝是具有⽐较⼤⼩功能的接⼝,⾥⾯定义了⽐较⽅法compareTo()⽅法
java valueof
//所以如果我们定义了⼀个类,这个类产⽣的对象需要⽐较⼤⼩就需要去实现Comparable接⼝,重写compareTo()⽅法,这种
//排序成为类的⾃然排序,compareTo()⽅法称为⾃然⽐较⽅法,因为String类已经实现了compareTo()⽅法,所以这⾥可以
/
/直接使⽤
//该⽅法的⽐较对象与指定对象的顺序
//compareTo(T  o)    返回值:int  返回0(两者相等),负数(对象⼩于参数),正数(对象⼤于参数)    参数o为要⽐较的对象
private static String[] stringRank(String[] str) {
for (int i = 0; i < str.length; i++) {
for (int j = 0; j < str.length - i - 1; j++) {
if (str[j]pareTo(str[j + 1]) > 0) {
String s = str[j];
str[j] = str[j + 1];
str[j + 1] = s;
}
}
}
return str;
}
private static String[] sortChar(String[] str) {
String[] s = new String[str.length];
for (int i = 0; i < str.length; i++) {
char[] c = str[i].toCharArray();
Arrays.sort(c);
s[i] = String.valueOf(c);
}
return s;
}
private static void printArr(String[] str){
for (int i = 0; i < str.length; i++) {
System.out.print(str[i]+"\t");
}
System.out.println();
}