Collections.sort学习

	public static void main(String[] args) {
		ComparatorUtil util=new ComparatorUtil();
		util.testSortComparator();
	}
	public void testSortComparator(){
		List<Map<String, String>> tempList=new ArrayList<>();
		Map<String, String> a1=new HashMap<>();
		a1.put("value", "1.1");
		Map<String, String> a2=new HashMap<>();
		a2.put("value", "5.1");
		Map<String, String> a3=new HashMap<>();
		a3.put("value", "3.1");
		Map<String, String> a4=new HashMap<>();
		a4.put("value", "7.1");
		tempList.add(a1);
		tempList.add(a2);
		tempList.add(a3);
		tempList.add(a4);
		doSort(tempList, "desc");
		System.out.println("----"+tempList.toString());
	}
	/**
	 * 排序
	 * @param tempList
	 * @param sort_type
	 */
	private void doSort(List<Map<String, String>> tempList, String sort_type) {
		if ("desc".equals(sort_type)) {
			Collections.sort(tempList, new Comparator<Map<String, String>>() {
				@Override
				public int compare(Map<String, String> o1, Map<String, String> o2) {
					//这里o1是指tempList 中排序靠后的值
					//若 o1索引: index1  若 o2索引: index2   index1>index2
					//compareTo返回结果说明:
					//			如果指定的数与参数相等返回0。
					//			如果指定的数小于参数返回 -1。
					//			如果指定的数大于参数返回 1。
					//sort返回结果说明:
					//返回负数顺序互换;返回正数顺序不变
					System.out.println("compare :o1="+o1.toString());
					System.out.println("compare :o2="+o2.toString());
					float value1 = Float.parseFloat(o1.get("value"));
					float value2 = Float.parseFloat(o2.get("value"));
					//第二个数大于第一个数返回正数  
					int result=new Float(value2).compareTo(new Float(value1));
					System.out.println(result);
					return result;
				}
			});
		} else {
			Collections.sort(tempList, new Comparator<Map<String, String>>() {
				@Override
				public int compare(Map<String, String> o1, Map<String, String> o2) {
					float value1 = Float.parseFloat(o1.get("value"));
					float value2 = Float.parseFloat(o2.get("value"));
					return new Float(value1).compareTo(new Float(value2));
				}

			});
		}
	}

运行结果:

compare :o1={value=5.1}
compare :o2={value=1.1}
-1
compare :o1={value=3.1}
compare :o2={value=5.1}
1
compare :o1={value=3.1}
compare :o2={value=1.1}
-1
compare :o1={value=3.1}
compare :o2={value=5.1}
1
compare :o1={value=7.1}
compare :o2={value=3.1}
-1
compare :o1={value=7.1}
compare :o2={value=5.1}
-1
----[{value=7.1}, {value=5.1}, {value=3.1}, {value=1.1}]


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三知之灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值