java map中含值为无意义浮点数的排序

主要是遇到浮点数中出现无意义的数时候的处理情况:

public static void main(String args[]) {
		Map<String, Float> map = new HashMap<String, Float>();

		map.put("a", 1073.8256f);
		map.put("b", 16.360186f);
		map.put("c", 803.6707f);
		map.put("d", 1164.1406f);
		map.put("e", Float.NaN); // Float.NaN表示无意义的浮点数

		List<Map.Entry<String, Float>> mapid = new ArrayList<Map.Entry<String, Float>>(
				map.entrySet());
		// 排序前
		for (int i = 0; i < mapid.size(); i++) {
			String id = mapid.get(i).toString();
			System.out.println(id);
		}
		System.out.println("");
		// 排序
		Collections.sort(mapid, new Comparator<Map.Entry<String, Float>>() {
			public int compare(Map.Entry<String, Float> o1,
					Map.Entry<String, Float> o2) {
				float v1 = o1.getValue();
				float v2 = o2.getValue();
				if (String.valueOf(v1).equals("NaN"))
					return 1;
				if (String.valueOf(v2).equals("NaN"))
					return -1;
				if ((v1 - v2) > 0)
					return -1;
				if ((v1 - v2) < 0)
					return 1;
				return 0;
				// return ((o2.getValue() - o1.getValue())>0 )? 1 : -1;
			}
		});
		// 排序后
		for (int i = 0; i < mapid.size(); i++) {
			String id = mapid.get(i).toString();
			System.out.println(id);
		}
	}

 结果:

d=1164.1406
e=NaN
b=16.360186
c=803.6707
a=1073.8256

d=1164.1406
a=1073.8256
c=803.6707
b=16.360186
e=NaN

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值