成语大全网 - 成语解释 - 求一个java排序的程序!字典顺序的!

求一个java排序的程序!字典顺序的!

import?java.util.Arrays;

import?java.util.Scanner;

//必须实现Comparable接口

public?class?Word?implements?Comparable<Word>{

private?finalString?word;

public?String?getWord()?{

return?word;

}

//构造器什么的无视吧

public?Word(String?word)?{

if(word?==?null)

throw?new?NullPointerException("不可以创造空单词!");

this.word?=?word;

}

//实现compareTo方法.主要的排序思路在这里

@Override

public?int?compareTo(Word?target)?{

if(target?==?null)

return?1;

if(target.getWord().equalsIgnoreCase(getWord()))

return?0;

char[]?selfLetters?=?getWord().toLowerCase().toCharArray();

char[]?targetLetters?=?target.getWord().toLowerCase().toCharArray();

int?selfLength?=?selfLetters.length;

int?targeLength?=targetLetters.length;

int?minLength?=?Math.min(selfLength,?targeLength);

for(int?index?=?0;index?<?minLength;index++){

if(selfLetters[index]?>?targetLetters[index]){

return?1;

}

else?if?(selfLetters[index]?<?targetLetters[index]){

return?-1;

}

continue;

}

return?selfLength?>?targeLength?1?:?-1?;

}

//重写?ToString?方法以便打印输出

@Override

public?String?toString()?{

return?word;

}

//主方法.用来查看效果

public?static?void?main(String[]?args)?{

?

int?size?=?5;//测试用的数组长度(单词数);

//?创造一个Word的数组用来保存输入的单词

Word[]?words?=new?Word[size];

Scanner?sc?=?new?Scanner(System.in);

for(int?i=0;i<size;i++)

{

System.out.println("请输入第"+(i+1)+"个单词");

words[i]?=?new?Word(sc.nextLine());

}

sc.close();//关闭流

System.out.println("排序结果为:");

//使用Arrays.sort方法排序,sort对自动调用你的compareTo方法来比较

Arrays.sort(words);

//打印出结果

System.out.println(Arrays.toString(words));

}

} 这是我刚写的。测试结果还可以。逻辑可能不是很严谨 不过作为作业应该应付足够了