comparator在list map set集合中的应用

JAVA EE

集合

comparator不能当参数传入HashMap和TreeMap中,但能当参数传入TreeSet和TreeMap中,所以要对HashSet和HashMap进行自定义排序时,用如下方法可实现

  1. 将HashSet或HashMap转变为list
  2. 调用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());
//
// }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值