对于字符串数组的大小排序,首先需要做的就是比较两个字符串的大小,如果直接使用>或<等符号比较字符串的大小,会直接报出错误:The operator > is undefined for the argument type(s) , 。下面介绍两种比较方法:
方法1——可以通过如下的规则进行比较:
1.比较对应位置字母的ASCII码值的大小;
2.如果其中一个字符串的所有字符的ASCII码值都和另一个字符串相等,则直接比较字符串的长度,例如:abc<abcd。
下面直接上代码:
public class StringArraySort {
public static void main(String[] args) {
String[] input=new String[] {"tmc","apad","apache","nihao","nihaoa"};
String[] output=arraySort(input);
for (String out:output) {
(out);
}
}
public static String[] arraySort(String[] input){
for (int i=0;i<-1;i++){
for (int j=0;j<-i-1;j++) {
if(isBiggerThan(input[j],input[j+1])){
String temp=input[j];
input[j]=input[j+1];
input[j+1]=temp;
}
}
}
return input;
}
/*如果first大于second,则返回true,否则返回false
*
*/
private static boolean isBiggerThan(String first, String second){
if(first==null||second==null||"".equals(first) || "".equals(second)){
("字符串不能为空!");
return false;
}
char[] arrayfirst=();
char[] arraysecond=();
int minSize = (, );
for (int i=0;i<minSize;i++) {
if((int)arrayfirst[i]>(int)arraysecond[i]){
return true;
}else if((int)arrayfirst[i] < (int)arraysecond[i]){
return false;
}
}
if(>){
return true;
}else {
return false;
}
}
}
方法2—— 可以用compareTo(String)方法,此外还有compareToIgnoreCase(String) 忽略大小写:
(String)方法返回值是int类型的,如果字符串相等返回值为0,不相等则返回其他数值;
2.比较时是从第一个字符开始,依次比较对应字符的大小(ASCII码值),如果第一个字符和待比较字符串的第一个字符不等,则结束比较并返回他们之间的差值(ASCII码的差值);
3.如果第一个字符相等,则继续比较后边的字符,直到比较完成。
下面直接上代码:
public class StringArraySort {
public static void main(String[] args) {
String[] input=new String[] {"tmc","apad","apache","nihao","nihaoa"};
String[] keys=arraySort(input);
for (String key : keys) {
(key);
}
}
public static String[] arraySort(String[] input){
for (int i=0;i<-1;i++){
for (int j=0;j<-i-1;j++) {
if(input[j].compareTo(input[j+1])>0){
String temp=input[j];
input[j]=input[j+1];
input[j+1]=temp;
}
}
}
return input;
}
}