Java之字符串数组排序(介绍两种方式)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jisuanjiguoba/article/details/82350692

对于字符串数组的大小排序,首先需要做的就是比较两个字符串的大小,如果直接使用>或<等符号比较字符串的大小,会直接报出错误:The operator > is undefined for the argument type(s) java.lang.String, java.lang.String。下面介绍两种比较方法:

方法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) {
            System.out.println(out);
        }
    }
	
	public static String[] arraySort(String[] input){       
        for (int i=0;i<input.length-1;i++){
            for (int j=0;j<input.length-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)){
            System.out.println("字符串不能为空!");
            return false;
        }        
        char[] arrayfirst=first.toCharArray();
        char[] arraysecond=second.toCharArray();        
        int minSize = Math.min(arrayfirst.length, arraysecond.length);        
        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(arrayfirst.length>arraysecond.length){
            return true;
        }else {
            return false;
        }
    }
}

方法2—— 可以用compareTo(String)方法,此外还有compareToIgnoreCase(String) 忽略大小写:

1.compareTo(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) {
            System.out.println(key);
        }
    }
	
	public static String[] arraySort(String[] input){       
        for (int i=0;i<input.length-1;i++){
            for (int j=0;j<input.length-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;
    }
}

猜你喜欢

转载自blog.csdn.net/jisuanjiguoba/article/details/82350692