如果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());
- }
- }
在需要排序的地方,对list进行如下操作即可(list类型为List<Map<String, Object>>):
- ComparatorMap comparator=new ComparatorMap();
- Collections.sort(list, comparator);
comparator即为你的自定义比较类,其中有compare方法定义了比较规则。将comparator做为参数传入Collections.sort方法,便可以按照你自定义的规则对List中元素进行排序操作了