熟悉j2se的朋友都知道,List是有序的集合,可以对其进行排序,那么具体又是如何排序的呢?
下面我会列举一下其排序的具体方法:
首先,声明一个List对象,放入简单对象:
List list = new ArrayList();
list.add(2);
list.add(1);
list.add(3);
一、 默认排序(根据元素的自然顺序 对指定列表按升序进行排序)
Collections.sort(list);
排序完成以后的list列表显示如下:
1
2
3
如果list对象中,存放的是另外的对象呢?比如Map对象?
将Map对象放入List对象中,每个map对象中放入两个元素seq和name,具体示例代码如下::
Map map =new HashMap();
map.put("seq",2);
map.put("name","zhangsan");
list.add(map);
map =new HashMap();
map.put("seq",1);
map.put("name","wangwu");
list.add(map);
二、通过比较器排序(根据指定比较器产生的顺序对指定列表进行排序)
1.声明一个比较器对象,并且重写比较器中的比较规则(按照seq降序排列):
Comparator comp = new Comparator(){
public int compare(Object o1,Object o2) {
Map p1=(Map)o1;
Map p2=(Map)o2;
if(Double.valueOf(p1.get("seq").toString())<Double.valueOf(p2.get("seq").toString()))
return 1;
else
return 0;
}
};
2.调用sort方法对list中的元素,按照重写的比较规则进行排序:
Collections.sort(list,comp);
排序后的结果如下:
2---zhangsan
1---wangwu
这样无论list对象中存放的是什么对象,都可以按照指定的排序规则进行排序了。