[英]Java get() changes initialized Hashtable keys to Null
我目前遇到与哈希表一起使用的 get() 方法的问题。
我的初始化代码:
Hashtable<Integer, pageEntry> pageTable = new Hashtable<Integer, pageEntry>();
Hashtable<Integer, LinkedList<Integer>> lookAhead = new Hashtable<Integer, LinkedList<Integer>();
//Initialize pageTable and co.
for(int i = 0; i < 10; i++) {
pageEntry p = new pageEntry();
pageTable.put(i, p);
lookAhead.put(i, new LinkedList<Integer>());
}
当我使用System.out.println(lookAhead);
,output如下:
{0=[]}
{1=[], 0=[]}
{2=[], 1=[], 0=[]}
{3=[], 2=[], 1=[], 0=[]}
{4=[], 3=[], 2=[], 1=[], 0=[]}
如果我使用System.out.println(lookAhead.get(0))
,则 output 如下
[]
[]
[]
[]
[]
但是,如果我使用System.out.println(lookAhead.get(3))
,则 output 更改为
null
null
null
[]
[]
是否有某些原因我忽略了为什么它将我的值更改为 null?
谢谢你的时间。
当 map 中不存在密钥时, get
方法返回null
。
在前 3 次迭代中,密钥不存在于 map 中。 它是在第 4 次迭代中添加的,并且 output 从第 4 次迭代开始显示与键关联的值。
这取决于您访问lookAhead.get(3)
的位置
当您使用lookAhead.get(0)
时,程序正在打印空链表,这些链表已初始化为 HashTable 中的索引“0”。
您完全无需初始化即可访问索引位置 3 ( lookAhead.get(3)
)。 因此,该程序正在为不存在的密钥打印 null。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.