题目:给定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版权协议,转载请附上原文出处链接和本声明。