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