您的位置:首页 > 编程语言 > Java开发

Java利用Comparator与Collections.sort对List排序

2014-03-31 23:59 471 查看
如果List<Object>中Object实现了Comparator接口,便可以直接用以下的方式对List进行排序

如List<String> list,通过list.add("abc")等操作为list添加了一些元素,通过以下代码即可完成排序:

Collections.sort(list)

由于使用了默认的排序规则,所以sort只传入了list这一个参数,但这确实过于局限了,为了是比较更多样化(比较的类多样化或比较方式多样化),可以通过自定义比较类,让其声明Comparator接口,然后重新其中的compare方法即可:

package comXXX;

import java.util.Comparator;
import java.util.Map;

public class ComparatorMap implements Comparator{

public int compare(Object arg0, Object arg1) {
Map<String, Object> map1 = (Map<String, Object>)arg0;
Map<String, Object> map2 = (Map<String, Object>)arg1;

String map1String = (String) map1.get("filename");
String map2String = (String) map2.get("filename");

return (map1String.toLowerCase()).compareTo(map2String.toLowerCase());
}
}
程序很简单,类ComparatorMap声明了Comparator接口,故需要实现compare方法。compare方法需要传入两个比较的对象,这里以Map为例(故list中存储的是Map类型的数据)。比较Map中的key值为filename的变量的大小,返回比较结果即可。

在需要排序的地方,对list进行如下操作即可(list类型为List<Map<String, Object>>):

ComparatorMap comparator=new ComparatorMap();
Collections.sort(list, comparator);
comparator即为你的自定义比较类,其中有compare方法定义了比较规则。将comparator做为参数传入Collections.sort方法,便可以按照你自定义的规则对List中元素进行排序操作了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: