关于java Collections类下的sort方法的一个问题 /麻烦解释一下输出结果,sort是怎么进行排序的?
//麻烦解释一下输出结果,sort()是怎么对元素进行排序的?importjava.util.*;publicclasstest{publicstaticvoidmain...
//麻烦解释一下输出结果,sort()是怎么对元素进行排序的?
import java.util.*;
public class test{
public static void main(String[] args){
List li = new LinkedList();
for(int i=12;i>=0;i--){
li.add("a"+i);
}
System.out.println(li);
Collections.sort(li);
System.out.println(li);
}
}
//输出结果为
[a12, a11, a10, a9, a8, a7, a6, a5, a4, a3, a2, a1, a0]
[a0, a1, a10, a11, a12, a2, a3, a4, a5, a6, a7, a8, a9] 展开
import java.util.*;
public class test{
public static void main(String[] args){
List li = new LinkedList();
for(int i=12;i>=0;i--){
li.add("a"+i);
}
System.out.println(li);
Collections.sort(li);
System.out.println(li);
}
}
//输出结果为
[a12, a11, a10, a9, a8, a7, a6, a5, a4, a3, a2, a1, a0]
[a0, a1, a10, a11, a12, a2, a3, a4, a5, a6, a7, a8, a9] 展开
2个回答
2015-11-28
展开全部
您好,提问者:
1、Collections.sort需要根据Comparable接口来指定排序顺序,排序顺序规则是0是重复不存入、1是升序、-1是降序。问题在于return this.xx这里,可以写成return new Integer(this.termfrequency).compareTo(f.termfrequency);因为Integer本身实现了Comparable接口。
2、我记得compareTo(这里传入的是一个Object obj的参数吧?这里控制一下
@Override
public int compareTo(Object obj){
if(obj instanceof Feature){
new throw RuntimeException("不是父类对象");
}
return new Integer(this.termfrequency).compareTo(f.termfrequency);
}
1、Collections.sort需要根据Comparable接口来指定排序顺序,排序顺序规则是0是重复不存入、1是升序、-1是降序。问题在于return this.xx这里,可以写成return new Integer(this.termfrequency).compareTo(f.termfrequency);因为Integer本身实现了Comparable接口。
2、我记得compareTo(这里传入的是一个Object obj的参数吧?这里控制一下
@Override
public int compareTo(Object obj){
if(obj instanceof Feature){
new throw RuntimeException("不是父类对象");
}
return new Integer(this.termfrequency).compareTo(f.termfrequency);
}
展开全部
默认按ASCII码排序,一位一位的比较,应该排了3次
第一次比较第一位全部是a,所以顺序没变
第二次第二位排序[a0, a1, a12, a11, a10, a2, a3, a4, a5, a6, a7, a8, a9]
第三次第三位排序[a0, a1, a10, a11, a12, a2, a3, a4, a5, a6, a7, a8, a9]
第一次比较第一位全部是a,所以顺序没变
第二次第二位排序[a0, a1, a12, a11, a10, a2, a3, a4, a5, a6, a7, a8, a9]
第三次第三位排序[a0, a1, a10, a11, a12, a2, a3, a4, a5, a6, a7, a8, a9]
追问
谢谢,其实刚发布完问题,我就找到了答案了,这里的sort根据传入数据类型调用了String类的的compareTo方法,比较基于字符串中各个字符的 Unicode 值,对string数据是按位依次对比的。具体是排了三次还是逐个比较一次排好就不清楚了。
还是感谢,至少比另一位直接复制粘贴的仁兄好。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询