主要参考jdk的:
java.util
类 Collections
java.lang.Object java.util.Collections
public static <T> void sort(List<T> list, Comparator<? super T> c)
-
根据指定比较器产生的顺序对指定列表进行排序。此列表内的所有元素都必须可使用指定比较器
相互比较(也就是说,对于列表中的任意
e1 和
e2 元素,
c.compare(e1, e2) 不得抛出
ClassCastException)。
此排序被保证是稳定的:不会因调用 sort 而对相等的元素进行重新排序。
排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的 n log(n) 性能。 指定列表必须是可修改的,但不必是可大小调整的。此实现将指定列表转储到一个数组中,并对数组进行排序,在重置数组中相应位置每个元素的列表上进行迭代。这避免了由于试图原地对链接列表进行排序而产生的 n2 log(n) 性能。
-
参数:
-
list
- 要排序的列表。 -
c
- 确定列表顺序的比较器。 null 值指示应该使用元素的 自然顺序。
抛出:
-
ClassCastException
- 如果列表中包含不可使用指定比较器 相互比较 的元素。 -
UnsupportedOperationException
- 如果指定列表的列表迭代器不支持 set 操作。
指定排序规则对象
import java.util.Comparator;
import java.util.Map;
public class CompareSort implements Comparator<Object> {
@Override
public int compare(Object o1, Object o2) {
Map.Entry map1=(Map.Entry)o1;
Map.Entry map2=(Map.Entry)o2;
System.out.println(map1.getKey().toString().compareTo(map2.getKey().toString()));
return map1.getKey().toString().compareTo(map2.getKey().toString());
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MapSort {
public static void main(String[] args) {
Map<String, String> map=new HashMap<String, String>();
map.put("1", "qw");
map.put("a", "sdf");
map.put("r", "qw");
map.put("g", "sdf");
map.put("b", "qw");
map.put("j", "sdf");
System.out.println(map);
//先将map转换为List类型
List list=new ArrayList(map.entrySet());
//然后再对list进行排序处理
Collections.sort(list, new CompareSort());
System.out.println(list);
}
}