趣百科

Arraylist如何实现排序

编辑:Simone 2024-11-20 11:03:50 542 阅读

Arraylist如何实现排序

大家注意了,笔试时经常使用Java7,list并没有sort方法,请使用Collections.sort()

总结:

使用Collections.sort()传入ArrayList,会采用默认的方式进行排序(字典序)

使用Collections.sort()传入ArrayList和自己实现Commparator接口的类的对象,实现自定义排序

使用List.sort()传入自己实现Commparator接口的类的对象,实现自定义排序

Comparator返回值在jdk1.7、jdk1.8里必须是一对相反数,如1和-1,不能是1和0.因为1.7的排序算法采用timsort,对返回值有严格要求http://baike.baidu.com/link?url=UCowuf65GHz3cWVf_d7t0QzYUCcwU0QUwserNTIrImlaTBvBAaVfywzppQ70DqWKzUu3dPqsF21k9IDpT8QPE_

importjava.util.*;

publicclassTestArrayListSort{

@SuppressWarnings("unchecked")

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

ListlistInt=newArrayList(),

listStr=newArrayList();

//自定义Comparator对象,自定义排序

Comparatorc=newComparator(){

@Override

publicintcompare(Integero1,Integero2){

//TODOAuto-generatedmethodstub

if((int)o1<(int)o2)

return1;

//注意!!返回值必须是一对相反数,否则无效。jdk1.7以后就是这样。

//elsereturn0;//无效

elsereturn-1;

}

};

listInt.add(2);listInt.add(4);listInt.add(9);listInt.add(5);

listStr.add("haha");

listStr.add("hehe");

listStr.add("ao");

listStr.add("Ti");

@SuppressWarnings("rawtypes")

Listlist01=newArrayList(listInt);

Listlist02=newArrayList(listInt);

Collections.sort(listInt);

Collections.sort(listStr);

list01.sort(c);

Collections.sort(list02,c);

System.out.println(listInt);

System.out.println(listStr);

System.out.println(list01);

System.out.println(list02);

}

}

输出:

[2, 4, 5, 9][Ti, ao, haha, hehe][9, 5, 4, 2][9, 5, 4, 2]

版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/life/69967.html

相关推荐