java对复杂的List进行排序

在平时工作中我们经常会需要用到排序,尤其是集合框架,虽然说本身自带排序的功能,但有时也会遇到自带的排序功能无法满足我们业务的需求
下面我们先假设一个业务场景,现在我们在数据库中查询到一个list集合里面存放的是一个类,我们要按照主键的大小进行排序,但主键是String类型的数字并且长度不一样 例如 “1”,“11”,“13”,“7”,“6”,如果我们直接调用sort方法会发现根本没法按照我们的预想排序,这时我们可以重写Comparator方法实现排序

public static void main(String[] args) {
		List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
		
		Map<String,Object> map1 = new HashMap<String,Object>();map1.put("sort", "1");
		Map<String,Object> map2 = new HashMap<String,Object>();map2.put("sort", "11");
		Map<String,Object> map3 = new HashMap<String,Object>();map3.put("sort", "13");
		Map<String,Object> map4 = new HashMap<String,Object>();map4.put("sort", "7");
		Map<String,Object> map5 = new HashMap<String,Object>();map5.put("sort", "6");
		
		list.add(map1);list.add(map2);list.add(map3);list.add(map4);list.add(map5);
		
		System.out.print("排序前的list顺序:");
		for(int i=0 ;i<list.size() ;i++) {
			if(i < list.size()-1) {
				System.out.print(list.get(i).get("sort")+"-->");
			}else {
				System.out.println(list.get(i).get("sort"));
			}
		}
		
		System.out.println("---------------------------------------------");
		
		//这里是方法
		**list.sort(new Comparator<Map<String,Object>>(){
			public int compare(Map<String, Object> o1, Map<String, Object> o2) {
				return Integer.parseInt(o1.get("sort").toString()) > Integer.parseInt(o2.get("sort").toString()) ? 1:-1;
			
			}
		});**
		
		System.out.print("排序后的list顺序:");
		for(int i=0 ;i<list.size() ;i++) {
			if(i < list.size()-1) {
				System.out.print(list.get(i).get("sort")+"-->");
			}else {
				System.out.println(list.get(i).get("sort"));
			}
		}

	}

结果:
在这里插入图片描述这里重写Comparator方法,将字符串转为数字然后比较大小,因为compare方法返回值时int所以用三元运算符,o1>o2 ? 1:-1 ,这样就可以完美实现比较了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值