JAVA中Hashtable 移除元素后 会留下一个null键值??
Hashtablehash=newHashtable();for(inti=0;i<array.length;i++){hash.put(""+i,""+array[i]...
Hashtable hash=new Hashtable(); for(int i=0;i<array.length;i++){
hash.put(""+i, ""+array[i]);
}hash.remove(“”+4); for(int i=0;i<array.length;i++){
System.out.println(""+hash.get(""+i));
} 打印出来的结果是0123null5678.9请问怎么会是这样?怎么还有null的位置?不会自动向前自动填充null位置吗?有没有哪个方法可以实现这个? 0 1 2 3 5 6 7 8 9 让他自动向前填充?像List 我记得就可以这样。。 展开
hash.put(""+i, ""+array[i]);
}hash.remove(“”+4); for(int i=0;i<array.length;i++){
System.out.println(""+hash.get(""+i));
} 打印出来的结果是0123null5678.9请问怎么会是这样?怎么还有null的位置?不会自动向前自动填充null位置吗?有没有哪个方法可以实现这个? 0 1 2 3 5 6 7 8 9 让他自动向前填充?像List 我记得就可以这样。。 展开
5个回答
展开全部
首先你要明白Hashtable的原理是通过hash函数进行存放和后去索引的,它的开销主要在添加元素时,但是它索引理论是O(1)的效率。Hashtable不是普通的数组或者链表。
你循环遍历Hashtable的方法也是有误的,参考我的例子。
public void testHashTable() {
int[] array = new int[10];
for (int i = 0; i < 10; i++) {
array[i] = i;
}
Hashtable hash = new Hashtable();
for (int i = 0; i < array.length; i++) {
hash.put("" + i, "" + array[i]);
}
hash.remove("" + 4);
for (Iterator itr = hash.keySet().iterator(); itr.hasNext();) {
String key = (String) itr.next();
String value = (String) hash.get(key);
System.out.println(key + "--" + value);
}
你循环遍历Hashtable的方法也是有误的,参考我的例子。
public void testHashTable() {
int[] array = new int[10];
for (int i = 0; i < 10; i++) {
array[i] = i;
}
Hashtable hash = new Hashtable();
for (int i = 0; i < array.length; i++) {
hash.put("" + i, "" + array[i]);
}
hash.remove("" + 4);
for (Iterator itr = hash.keySet().iterator(); itr.hasNext();) {
String key = (String) itr.next();
String value = (String) hash.get(key);
System.out.println(key + "--" + value);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-28
展开全部
这个是正常的。
找不到key及对应的value了,返回null。
你任意指定一个key,只要是不存在,都会返回null。
找不到key及对应的value了,返回null。
你任意指定一个key,只要是不存在,都会返回null。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
hashtable中不容许有空值的吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-29
展开全部
你把key为4的元素删了,再去get(4)当然得到的就是null了,有什么不对吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同问,为了经验,别删我楼。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询