英文:
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>>();
// 初始化pageTable和其他内容
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);
时,输出如下所示:
{0=[]}
{1=[], 0=[]}
{2=[], 1=[], 0=[]}
{3=[], 2=[], 1=[], 0=[]}
{4=[], 3=[], 2=[], 1=[], 0=[]}
如果我使用System.out.println(lookAhead.get(0))
,输出如下所示:
[]
[]
[]
[]
[]
然而,如果我使用System.out.println(lookAhead.get(3))
,输出会变成:
null
null
null
[]
[]
我是否忽视了某些原因,导致它将我的值更改为null?
感谢您的时间。
英文:
I'm currently having a problem with the get() method used with hashtables.
My initialization code:
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>());
}
when I use System.out.println(lookAhead);
, the output is as follows:
{0=[]}
{1=[], 0=[]}
{2=[], 1=[], 0=[]}
{3=[], 2=[], 1=[], 0=[]}
{4=[], 3=[], 2=[], 1=[], 0=[]}
If I use System.out.println(lookAhead.get(0))
, the output is as follows
[]
[]
[]
[]
[]
However, if I use System.out.println(lookAhead.get(3))
, the output changes to
null
null
null
[]
[]
Is there some reason I'm overlooking as to why it changes my values to null?
Thanks for your time.
答案1
得分: 2
get
方法在键不存在于映射中时返回 null
。
在前3次迭代中,键不存在于映射中。在第4次迭代中添加了该键,输出显示从第4次迭代开始与该键关联的值。
英文:
The get
method returns null
when the key is not present in the map.
In the first 3 iterations, the key is not present in the map. It's added on the 4th iteration, and the output shows a value associated with the key from the 4th iteration onwards.
答案2
得分: 0
这取决于你访问了lookAhead.get(3)
的位置。
当你使用lookAhead.get(0)
时,程序会打印出空的链表,这些链表在你的哈希表中被初始化为索引'0'。
你会访问索引位置3(lookAhead.get(3)
),但根本没有进行初始化。因此,程序会对不存在的键打印出null。
英文:
It depends on where you accessed lookAhead.get(3)
When you use lookAhead.get(0)
, the program is printing the empty linkedlists which were initialized to the index '0' in your HashTable.
You would have accessed the index location 3 (lookAhead.get(3)
) without initializing at all. So, the program is printing null for non existent keys.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论