java的list集合如何根据对象中的某个字段排序?

结果为有小到大

1、list里面为map

    public static void main(String[] args) {
    	List<Map<String, Integer>> list = new ArrayList<>();
    	Map<String, Integer> map1 = new HashMap<>();
    	map1.put("goods_id", 10);
    	map1.put("sort", 10);
		
    	Map<String, Integer> map2 = new HashMap<>();
    	map2.put("goods_id", 30);
    	map2.put("sort", 30);
		
    	Map<String, Integer> map3 = new HashMap<>();
    	map3.put("goods_id", 20);
    	map3.put("sort", 21);
		
    	Map<String, Integer> map4 = new HashMap<>();
    	map4.put("goods_id", 21);
    	map4.put("sort", 21);
		
		list.add(map1);
		list.add(map2);
		list.add(map3);
		list.add(map4);
		
		System.out.println("排序前:"+list);
		
		Collections.sort(list, new Comparator<Map>() {

			@Override
			public int compare(Map o1, Map o2) {
				if (Integer.valueOf(o1.get("sort").toString()) >= Integer.valueOf(o2.get("sort").toString())) {
					return 1;
				}
//				if (Integer.valueOf(o1.get("sort").toString()) > Integer.valueOf(o2.get("sort").toString())) {
//					return 0;
//				}
				return -1;
			}
		});
		System.out.println("排序后:"+list);
	}
    

2、list里面为实体类

    public static void main(String[] args) {
    	List<ActivityCouponCategory> list = new ArrayList<>();
    	ActivityCouponCategory activityCouponCategory1 = new ActivityCouponCategory();
    	activityCouponCategory1.setCategoryId(10);
    	activityCouponCategory1.setCategoryName("10");
		
    	ActivityCouponCategory activityCouponCategory2 = new ActivityCouponCategory();
    	activityCouponCategory2.setCategoryId(30);
    	activityCouponCategory2.setCategoryName("30");
		
    	ActivityCouponCategory activityCouponCategory3 = new ActivityCouponCategory();
    	activityCouponCategory3.setCategoryId(20);
    	activityCouponCategory3.setCategoryName("21");
		
    	ActivityCouponCategory activityCouponCategory4 = new ActivityCouponCategory();
    	activityCouponCategory4.setCategoryId(20);
    	activityCouponCategory4.setCategoryName("22");
		
		list.add(activityCouponCategory1);
		list.add(activityCouponCategory2);
		list.add(activityCouponCategory3);
		list.add(activityCouponCategory4);
		
		System.out.println("排序前:"+list);
		
		Collections.sort(list, new Comparator<ActivityCouponCategory>() {

			@Override
			public int compare(ActivityCouponCategory o1, ActivityCouponCategory o2) {
				if (o1.getCategoryId() > o2.getCategoryId()) {
					return 1;
				}
				if (o1.getCategoryId() == o2.getCategoryId()) {
					return 0;
				}
				return -1;
			}
		});
		System.out.println("排序后:"+list);
	}
返回值含义
负整数当前对象的值 < 比较对象的值 , 位置排在前
当前对象的值 = 比较对象的值 , 位置不变
正整数当前对象的值 > 比较对象的值 , 位置排在后
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值