gpt4 book ai didi

java - 哈希表内容 : the first 2 Keys are Null . ...如何获取我保存的内容

转载 作者:行者123 更新时间:2023-12-01 11:55:20 25 4
gpt4 key购买 nike

我的哈希表有问题...我有一个哈希表< String1,String2 > String1 = 是一个 JTextfield 作为我的哈希表键String2 = 是一个 JTextArea 作为我的哈希表内容myHashtable.put(JTextfield.getText(),JTextArea.getText());现在我想将哈希表中所有保存的内容写入一个文件但我的前 2 个内容是“null”

for (int i = 0; i < myHashtable.size(); i++) {
String[] key = myHashtable.keySet().toString().split(", ");
writer.println(key[i].replace("]", "").replace("[", "") + ": "
+ myHashtable.get(key[i]));

以下输出应如下所示:

examplekey:一些内容
examplekey2:更多内容
examplekey3:一些内容
但看起来像:

示例键:空
examplekey2 : null
examplekey3:一些内容

我这样写的原因是我想读取这个文件,在重新启动后获取我的哈希表内容,并且 .keySet 函数在开始和结束处给了我一个“[”和“]”,这就是为什么我用“”替换它。

最佳答案

您应该通过调试器运行程序,以便更好地了解它正在做什么。

让我们看一个例子:

Hashtable<String, String> myHashtable = new Hashtable<>();
myHashtable.put("1", "rat");
myHashtable.put("2", "cat");
myHashtable.put("3", "bat");

运行循环,第一次迭代将如下所示:

myHashtable.keySet().toString() -> "[3, 2, 1]"

String[] key = myHashtable.keySet().toString().split(", ") -> "[3", "2", "1]"

key[0] -> "[3"
key[0].replace("]", "").replace("[", "") -> "3"
myHashtable.get(key[0]) -> myHashtable.get("[3") -> null

如您所见,replace() 返回一个新字符串,其中替换目标位置。它不会修改原始字符串。因此,当您调用 myHashtable.get(key[0]) 时,键是 "[3",它不在哈希表中,因此它返回 null。如果您使用示例哈希表运行代码,您将在文件中得到如下内容:

3: null
2: cat
1: null

它适用于中间的键,在示例中为 "2" ,因为当您拆分字符串时,它们已经没有 "[""]" 附加到它们。

现在,请注意,当您执行 myHashtable.keySet().toString().split(", ") 时,您已经可以访问键集中的元素。您不必将其转换为字符串,然后尝试从该字符串获取 key 。所以你可以这样做:

for (String key : myHashtable.keySet()) {
writer.println(key + ": " + myHashtable.get(key));
}

如果我们直接迭代所有条目,我们可以让它更快一点:

for (Map.Entry<String, String> entry : myHashtable.entrySet()) {
writer.out.println(entry.getKey() + ": " + entry.getValue());
}

关于java - 哈希表内容 : the first 2 Keys are Null . ...如何获取我保存的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28498206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com