map集合排序

主要参考jdk的:

java.util
类 Collections

java.lang.Object
  java.util.Collections
public static <T> void sort(List<T> list,
                            Comparator<? super T> c)
根据指定比较器产生的顺序对指定列表进行排序。此列表内的所有元素都必须可使用指定比较器 相互比较(也就是说,对于列表中的任意 e1e2 元素, 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);
	}
}

 

你可能感兴趣的:(map)