繁体   English   中英

Java get() 将初始化的 Hashtable 键更改为 Null

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM