package com.csf.sam.util;
import java.util.*;
/**
* Created by fenglei.ma on 2018/4/23. 23:03
*/
public class CollectionTools {
/**
* 将map按照value值排序
*
* @param map
* @param reverse true:倒序。false:正序。
* @return
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static Map sortByValue(Map map, final boolean reverse) {
List list = new LinkedList(map.entrySet());
Collections.sort(list, new Comparator() {
public int compare(Object o1, Object o2) {
if (reverse) {
return -((Comparable) ((Map.Entry) o1).getValue())
.compareTo(((Map.Entry) o2).getValue());
}
return ((Comparable) ((Map.Entry) o1).getValue())
.compareTo(((Map.Entry) o2).getValue());
}
});
Map result = new LinkedHashMap();
for (Iterator it = list.iterator(); it.hasNext(); ) {
Map.Entry entry = (Map.Entry) it.next();
result.put(entry.getKey(), entry.getValue());
}
return result;
}
/**
* 将map按照key值排序
*
* @param map
* @param reverse true:倒序。false:正序。
* @return
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static Map sortByKey(Map map, final boolean reverse) {
List list = new LinkedList(map.entrySet());
Collections.sort(list, new Comparator() {
public int compare(Object o1, Object o2) {
if (reverse) {
return -((Comparable) ((Map.Entry) o1).getKey())
.compareTo(((Map.Entry) o2).getKey());
}
return ((Comparable) ((Map.Entry) o1).getKey())
.compareTo(((Map.Entry) o2).getKey());
}
});
Map result = new LinkedHashMap();
for (Iterator it = list.iterator(); it.hasNext(); ) {
Map.Entry entry = (Map.Entry) it.next();
result.put(entry.getKey(), entry.getValue());
}
return result;
}
public static void main(String[] args) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(1, 1);
map.put(3, 3);
map.put(2, 2);
Map result = sortByKey(map, true);
System.out.println(result);
System.out.println(result.keySet());
List<Integer> list = new ArrayList<Integer>();
list.addAll(result.keySet());
System.out.println(list);
}
}