JAVA EE
集合
comparator不能当参数传入HashMap和TreeMap中,但能当参数传入TreeSet和TreeMap中,所以要对HashSet和HashMap进行自定义排序时,用如下方法可实现
- 将HashSet或HashMap转变为list
- 调用Collections.sort(list,comparator)
代码片
.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
public class test2{
public static void main(String[] args) throws Exception {
// Comparator comparator = new Comparator() {
//
// @Override
// public int compare(Integer o1, Integer o2) {
// // TODO Auto-generated method stub
// int i=o2-o1;
// return i;
// }
// };
// List list=new ArrayList();
//
// for(int i=0;i<5;i++) {
// list.add((int)(Math.random()*5+3));
// }
// Collections.sort(list,comparator);
// for(Integer value:list) {
// System.out.println(value);
// }
// Comparator comparator = new Comparator() {
// @Override
// public int compare(Integer o1, Integer o2) {
// // TODO Auto-generated method stub
// int i=o2-o1;
// return i;
// }
// };
//
// Map<Integer,Integer> map1=new TreeMap<Integer,Integer>(comparator);
//
// Map<Integer,Integer> map=new HashMap<Integer,Integer>();
// for(int i=0;i<5;i++) {
// map1.put((int)(Math.random()*5+3), (int)(Math.random()*4+6));
// }
//
// for(Map.Entry<Integer, Integer> entry:map1.entrySet()) {
// System.out.println(“key=”+entry.getKey()+"-----"+“value=”+entry.getValue());
//
// }
// HashSet排序
// Set set=new HashSet();
// for(int i=0;i<5;i++) {
// set.add(i);
// }
// List list1=new ArrayList(set);
// Collections.sort(list1,comparator);
//
// //Tree排序
// Set set1=new TreeSet(comparator);
// for(int i=0;i<5;i++) {
// set1.add((int)(Math.random()*5+3));
// }
//
// for(Integer value:set1) {
// System.out.println(value);
// }
// //HashMap排序
// Comparator<Entry<Integer, Integer>> comparator1 = new Comparator<Entry<Integer, Integer>>() {
// @Override
// public int compare(Entry<Integer, Integer> o1,Entry<Integer, Integer> o2) {
// // TODO Auto-generated method stub
// int i=o2.getKey()-o1.getKey();
// return i;
// }
// };
// Map<Integer,Integer> map=new HashMap<Integer,Integer>();
// for(int i=0;i<5;i++) {
// map.put((int)(Math.random()*5+3), (int)(Math.random()*4+6));
// }
// List<Entry<Integer, Integer>> list2=new ArrayList<Entry<Integer, Integer>>(map.entrySet());
// Collections.sort(list2,comparator1);
// for(Entry<Integer, Integer> entry:list2) {
// System.out.println(“key=”+entry.getKey()+"-----"+“value=”+entry.getValue());
//
// }
}