HashMap从链表中取值的问题

szbszb 2010-10-28 05:51:25
我new了一个HashMap,然后往这个里面put值,但好像在压值的过程中出现了hashcode值相同,所以出现了链表,现在需要如何从链表里取值。
使用containsKey查找对应的KEY值为sendfileprefix返回的是true,但无法获取它的value,总是报空指针,请问怎么获取value值
...全文
593 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
不能飞的肥燕 2010-10-29
  • 打赏
  • 举报
回复
map遍历喜欢用:

For(String key : map.KeySet){
String value = map.get(key);
}
a5692408b 2010-10-29
  • 打赏
  • 举报
回复
高手解决这个问题http://topic.csdn.net/u/20101029/10/acea177d-dc34-4a2e-9652-064e00aada65.html?seed=2071705691&r=69442896#r_69442896
szbszb 2010-10-29
  • 打赏
  • 举报
回复
晕哦,找个能外链的像册真难
zn85600301 2010-10-29
  • 打赏
  • 举报
回复
你的链接受限···
szbszb 2010-10-29
  • 打赏
  • 举报
回复
晕。图片被缩小了。。。再换一个
szbszb 2010-10-29
  • 打赏
  • 举报
回复
重新找了个地方把图片上传了,CSDN真麻烦,没办法上传本地图片
szbszb 2010-10-29
  • 打赏
  • 举报
回复
晕。。。图禁掉了。。
zn85600301 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 szbszb 的回复:]

你的sendfileprefix这个KEY对应的值是在Entry的链表里吗??你看看我顶楼发的那个图,sendfileprefix这个KEY是在KEY为title的Entry的next下边。如果sendfileprefix与title同级的话我是可以取出值的,但就是因为他在KEY为title的Entry的链表里了
[/Quote]
你的图被禁掉了···
龙四 2010-10-29
  • 打赏
  • 举报
回复
这个应该是Map内部管理的,除非你的hashcode相同equals也相同就覆盖掉了
szbszb 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wang_shx 的回复:]
为什么要遍历Map呢?
直接取就可以了,如果怕没有的话,判断下是否null就可以
getValue = yourMap.get("sendfileprefix");
if (getValue != null ){
......
}
[/Quote]
最开始我是没有使用循环的,我是直接通过(String)map.get("sendfileprefix")这种方式来取值的,通过断点跟踪进去可以看到KEY为sendfileprefix的值,但是当运行(String)map.get("sendfileprefix")这一句的时候就报空指针
szbszb 2010-10-29
  • 打赏
  • 举报
回复
你的sendfileprefix这个KEY对应的值是在Entry的链表里吗??你看看我顶楼发的那个图,sendfileprefix这个KEY是在KEY为title的Entry的next下边。如果sendfileprefix与title同级的话我是可以取出值的,但就是因为他在KEY为title的Entry的链表里了
wang_shx 2010-10-29
  • 打赏
  • 举报
回复
为什么要遍历Map呢?
直接取就可以了,如果怕没有的话,判断下是否null就可以
getValue = yourMap.get("sendfileprefix");
if (getValue != null ){
......
}
zn85600301 2010-10-29
  • 打赏
  • 举报
回复

HashMap map = new HashMap();
map.put("sendfileprefix", "value");
map.put("sendfilenum", "value1");
for(Iterator it = map.entrySet().iterator(); it.hasNext(); ){
Map.Entry e = (Map.Entry)it.next();

if(e.getKey().equals("sendfileprefix")){
String rs = (String)map.get(e.getKey());
System.out.println(rs);
}
if(e.getKey().equals("sendfilenum")){
e.getValue();
String rs =(String)map.get(e.getKey());
System.out.println(rs);
}
}

结果 打印出来
value
value1
不知道你是哪里出问题了
szbszb 2010-10-29
  • 打赏
  • 举报
回复
以下是通过循环去获取寻找KEY能匹配上的Entry,然后将它的值取出,但匹配上后无法将值取出转换为STRIN,MAP里确实有我需要匹配的KEY,而且有值,具体MAP内容可以看顶楼
for(Iterator it = map.entrySet().iterator(); it.hasNext(); ){
Map.Entry e = (Map.Entry)it.next();

if(e.getKey().equals("sendfileprefix")){
DispatchWordBean.setSendfileprefix((String)map.get(e.getKey()));
}
if(e.getKey().equals("sendfilenum")){
e.getValue();
DispatchWordBean.setSendfilenum((String)map.get(e.getKey()));
}
}

zn85600301 2010-10-29
  • 打赏
  • 举报
回复
你还是贴出具体转化的代码吧 对象都拿到了 怎么可能还报空指针
szbszb 2010-10-29
  • 打赏
  • 举报
回复
我自己知道KEY,通过containsKey查找是否有sendfileprefix这个KEY存在返回的也是true,通过Object yourObject = map.get("sendfileprefix");也可以得到对象,但是就是不能把Object转换成string,只要一转就会报空指针,现在的问题就是我已经取到对应KEY的对象,但就是无法转换成string(这个KEY对象是保存的value值是一个字符串,这点是确定的)
blazingfire 2010-10-28
  • 打赏
  • 举报
回复
Object yourObject = map.get("sendfileprefix");
zhpeng19880510 2010-10-28
  • 打赏
  • 举报
回复
比如你首先 HashMap map = new HashMap();然后 map.put("key","value")这样后我们对这个map设了多个值后
我们来遍历这个map 比如说我这里的值是String类型的
for(int i=0;i<map.size();i++) {
String value = map.get(i);
}
或者你通过map.get("key")也可以把key值所对应的value值拿到,但这前是要你知道key的值

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧