添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

public List sortView() {
List list=computerList();
Collections.sort(list,new ClientIDComparator());

public class ClientIDComparator implements Comparator{
  public int compare(Object computer1, Object computer2) {
		String s1 = ((String) computer1).toLowerCase();
		String s2 = ((String) computer2).toLowerCase();
		if (s1.charAt(0) > s2.charAt(0)) {
			return 1;
		} else if (s1.charAt(0) < s2.charAt(0)) {
			return -1;
		} else {
			if(s1.length()==s2.length())
				return s1.compareTo(s2);
			else if(s1.length()>s2.length())
				return 1;
			return 0;

现在目前还没有实现,求指教
正确排序应该是
000090
100001
A00001
A00002
A00003
A00004
A00005
A00006

问题补充
咱一个人都没回呀,,,,,,,,,,,,,,,,,,,,,,,,

lz,看了你的“正确排序应该是 ”,理解下需求,
1.先按字母
2.在按字符长度
3.如果是字母加数字的在按大小
应该是
1.先按首字母
2.在按字符长度
3.如果是字母加数字的在按大小
即第一条要先按首字母吧??
说下我的思路哈,我认为得进行3次排序:
1。第一次根据首字母进行排序,排序输出的是一个首字母递增的序列
2。对第一次排序结果进行二次排序,此时,设立游标,int j代表位置,char tmp代表每个字符串的首字母,分段排序(对首字母相同的字符串排序)

String[] arr=new String[]{"aaa"};
for(int i=0;i<arr.length;i++){
int j=i;
char tmp=arr[i].charAt(0);
while(j+1<arr.length){
j++;
char tmp1=arr[j].charAt(0);
if(tmp!=tmp1){
j--;
break;
}
}
if(j>i){
for(int k=i;k<j;k++){
for(int z=k+1;z<=j;z++){
String temp=arr[k];
String temp1=arr[z];
if(temp.length()>temp1.length()){
arr[k]=temp1;
arr[k+1]=temp;
}
}

}
}
i=j;
}
3。这时满足需求的前2个,然后进行第三遍排序,思路和第二次差不多,多个int len保存长度,即在满足tmp(首字母)相等,len(长度)相等的字符串,按照大小排序。
当然,算法看上去好庞大,只是分享下思路,期待有更好的算法学习下。

2008年9月03日 20:03
flykete