java map set null,java – TreeMap中的键返回null

所以我有一个非常奇怪的错误.当我最初使用keySet()迭代大型TreeMap的前10个键时,我偶然发现了它.其中一个键是返回null,就我的理解而言,这是不可能的.所以我在下面写了测试代码:

int i = 0;

for (Map.Entry es : sortedMap.entrySet()){

if (i >= 10) {

break;

}

if (sortedMap.containsKey(es.getKey())){

System.out.println(es.getKey() + ":" + sortedMap.get(es.getKey()));

} else {

System.out.println("Key " + es.getKey() + " does not exist,yet...");

System.out.println("This does work: " + es.getKey() + ":" + es.getValue());

System.out.println("This does NOT work: " + es.getKey() + ":" + sortedMap.get(es.getKey()));

}

i++;

}

并获得以下结果:

SOAP:967

'excerpt'::679

'type'::679

Key 'author_url': does not exist,yet...

This does work: 'author_url'::679

This does NOT work: 'author_url'::null

'date'::679

Android:437

TLS:295

message:283

server:230

monthly:215

<<<<<<<<<<<<<<<<<<<

{SOAP=967,'excerpt':=679,'type':=679,'author_url':=679,'date':=679,Android=437,TLS=295,message=283,server=230,monthly=215...

我在前十名之后切断了地图,因为那里有更多的地图,但所有这些都是一个有价值的钥匙.

所以我的问题是这样的:当我使用密钥从TreeMap直接获取(key)时,为什么我得到null,但是EntrySet返回正确的键和值?

这是我的比较器,因为我在Integer上订购:

class ValueComparator implements Comparator {

Map base;

public ValueComparator(Map base) {

this.base = base;

}

public int compare(Object a,Object b) {

if ((Integer) base.get(a) < (Integer) base.get(b)) {

return 1;

} else if ((Integer) base.get(a) == (Integer) base.get(b)) {

return 0;

} else {

return -1;

}

}

}

TreeMap的构建如下:

ValueComparator bvc = new ValueComparator(allMatches);

TreeMap sortedMap = new TreeMap(bvc);

//Sort the HashMap

sortedMap.putAll(allMatches);

allMatches是HashMap< String,Integer>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值