gpt4 book ai didi

java - 哈希表中的空对象

转载 作者:行者123 更新时间:2023-12-02 02:41:32 27 4
gpt4 key购买 nike

当我尝试 map.get(k) 哈希表中的索引时,它返回 null 并且想知道这是否是我的 csv 到哈希表代码。

public static void main(String[] args) throws ParseException, IOException {

BufferedReader br = new BufferedReader(new FileReader("primes.csv"));
String line = null;
Hashtable<String, String> map = new Hashtable<String, String>(100);

while((line = br.readLine()) != null){
String str[] = line.split(",");

map.put(str[0], str[1]);
}
br.close();
System.out.println(map);

int k;

k = Integer.parseInt(JOptionPane.showInputDialog(f,"Enter an integer k whee"
+ " 3 < k < 1229: "));

while (k <= 3 || k >= 1229){
k = Integer.parseInt(JOptionPane.showInputDialog(f,"Sorry try again: "));
}

JOptionPane.showMessageDialog(f, "The "+ k +"th prime number is " + map.get(k));

}

我的 csv 文件还包含

1, 1 (next line)

2, 2 (next line)

3, 3 (next line)

4, 5 (next line)

5, 7 and so on

最佳答案

您在 map 中使用String键,并希望使用Integer键从中检索对象:

String str[] = line.split(",");
...
map.put(str[0], str[1]);
...
int k;
...
map.get(k);

这是不可能的。
equals() 的角度来看,它们并不相等。
因此,在这两种情况下都使用相同的类型作为键。
例如,要在两种情况下使用 String,请按以下方式更改 get() 调用:

map.get(String.valueOf(k));

此外,Hashtable 是一个线程安全类(效率也不高)。
您不需要在代码示例中使用此功能。HashMap 就足够了。

关于java - 哈希表中的空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45371420/

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