首先我们定义一个List并且add元素
List list = new ArrayList();
list.add(1);
list.add(89);
list.add(45);
list.add(38);
list.add(90);
第一种方法:运用java.util.Collections这个jdk提供的类
Collections.sort(list);这个方法根据元素的自然顺序 对指定列表按升序进行排序。这样就可以实现升序排序,如果是倒序的话也很简单,就将排好序的list反转过来,通过Collections.reverse(list);即可。
Collections这个工具类中还好很多的方法提供使用,这里就介绍这两个,可以自己查阅JDK的API文档。
第二种方法:根据冒泡排序来
/**
* @param list
* @param operation 操作符:>表示升序,<表示降序
*/
public static void sortList(List list ,String operation) {
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size()-i-1; j++) {
int a = Integer.parseInt(list.get(j).toString());
int b = Integer.parseInt(list.get(j+1).toString());
if(">".equals(operation)){
if(a>b){
list.set(j, b);
list.set(j+1, a);
}
}else{
if(a<b){
list.set(j, b);
list.set(j+1, a);
}
}
}
}
}
sortList(list,operation);通过传入指定的list和操作符便可对list进行升序和降序的排列。
第三种方法:第一种方法的时候我们已经了解到了Collections.sort()。在Collections类里还有这个方法的重载。Collections.sort(list,comparator);这个就厉害啦可以让我们自己去实现一个比较器comparator。这样就方便扩展了,不管要排序的集合是什么或者是集合内要什么规则排序我们都可以自己来实现,下来我们还是对int类型的来举个例子
public class Test {
/**
*排序
*/
public void sortList(List<Integer> list){
ComparatorList cl = new ComparatorList();
Collections.sort(list, cl);
}
/**
* 内部类来自己实现比较器的接口,按照我们自己的排序规则
*
*/
class ComparatorList implements Comparator<Integer>{
@Override
public int compare(Integer o1, Integer o2) {
return o1>o2 ? 1:-1;//这里返回的值,1升序 -1降序
}
}
public static void main(String[] args){
Test test = new Test();
List<Integer> list = Arrays.asList(4,5,6,3,6,9,1,2);
test.sortList(list);
for(Integer i : list){
System.out.println(i);
}
}
}
// 通过这种自己来实现比较器的方式,想List<对象>,List<Map<String, Object>>,
// List<List<Object>> 复杂的都可以来进行排序
/**
* 下面这部分就是对List<Map<String, Object>>进行排序
*
*/
List<Map<String, Object>> dataList = new List<Map<String, Object>>();
class ComparatorListSort implements Comparator<Map> {
private String orderByKey;
public ComparatorListSort(String orderByKey){
this.orderByKey= orderByKey;
}
@Override
public int compare(Map o1, Map o2) {
int order = 0;
long d1 = MapUtils.getLong(o1, orderByKey, 0L);
long d2 = MapUtils.getLong(o2, orderByKey, 0L);
if (d1 > d2) {
order = 1;
} else if (d1 < d2) {
order = -1;
}
return order;
}
}
ComparatorListSort comparatorListSort = new ComparatorListSort("F1");
Collections.sort(dataList,comparatorListSort);