JAVA:字符串的字典排序

题目:给定n个字符串,对n个字符串按照字典排序。



思路:可以将字符串读入ArrayList中,然后重写Collection中sort方法的compare函数。因为本题是String类型,也可以直接调用Collection.sort(list)来达到这个目的。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while(scanner.hasNext()) {
            int n= scanner.nextInt();
            List<String> list=new ArrayList<>();
            for(int i=0;i<n;i++) {
                String s = scanner.next();
                 list.add(s);
            }
            Collections.sort(list, new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    char[] chars1=o1.toCharArray();
                    char[] chars2=o2.toCharArray();
                    int i=0;
                    while(i<chars1.length && i<chars2.length){
                        if(chars1[i]>chars2[i]){
                            return 1;
                        }else if(chars1[i]<chars2[i]){
                            return -1;
                        }else{
                            i++;
                        }
                    }
                    if(i==chars1.length){  //o1到头
                        return -1;
                    }
                    if(i== chars2.length){ //o2到头
                        return 1;
                    }
                    return 0;
                }
            });
            for(String s:list){
                System.out.println(s);
            }
        }
    }
}
其中,
Collections.sort(list, new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    char[] chars1=o1.toCharArray();
                    char[] chars2=o2.toCharArray();
                    int i=0;
                    while(i<chars1.length && i<chars2.length){
                        if(chars1[i]>chars2[i]){
                            return 1;
                        }else if(chars1[i]<chars2[i]){
                            return -1;
                        }else{
                            i++;
                        }
                    }
                    if(i==chars1.length){  //o1到头
                        return -1;
                    }
                    if(i== chars2.length){ //o2到头
                        return 1;
                    }
                    return 0;
                }
            });

完全可以由下面代替:

Collections.sort(list);


版权声明:本文为qq_27139155原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。