List 快速有效排序

熟悉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对象中存放的是什么对象,都可以按照指定的排序规则进行排序了。

猜你喜欢

转载自edwardcoo.iteye.com/blog/1657535
今日推荐