gpt4 book ai didi

java - HashMap containsKey() 方法不适用于某些元素

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

构造函数接受两个数组,我想将它们放入我的 HashMap 中,但如果映射已经包含其中一个数组中的单词,那么我想抛出异常。除非重复项是数组项中的最后一项,否则这种方法有效。为什么会发生这种情况?

private HashMap<String, Double> wordToWgt = new HashMap<String, Double>();
private TST t = new TST();
double maxWeight = 0.0;
private String maxWord = "";
public Autocomplete(String[] terms, double[] weights) {
if (terms.length != weights.length) {
throw new IllegalArgumentException();
}
else {
for (int i = 0; i < terms.length; i++) {
if (weights[i] < 0) {
throw new IllegalArgumentException();
}
else if (wordToWgt.containsKey(terms[i])) {
throw new IllegalArgumentException();
}
else if (weights[i] > maxWeight) {
maxWeight = weights[i];
maxWord = terms[i];
}
t.insert(terms[i], weights[i]);
wordToWgt.put(terms[i], weights[i]);
}
}

//System.out.println(wordToWgt.keySet()); }

最佳答案

我看不出您的代码有任何问题,因此我将建议一些替代解释。

你(我猜)使用的是输出

 System.out.println(wordToWgt.keySet());

告诉您有重复项。但是,keySet 返回的键集是一个真正的集(在String.equals 语义的上下文中)。因此不能重复。

所以您所看到的重复项......实际上......根本不重复。这怎么可能?

  • 其中一个字符串上可能有前导或尾随空白字符。这很容易被忽视。

  • 可能是 homoglyph问题。

也可能是您的/您的工具链没有正确重建代码;即您正在运行的代码可能与您正在查看/编辑的源代码不匹配。

<小时/>

附注事实上,您在最后一个元素上看到这一点可能只是巧合,也可能是输入字符串生成方式的人为因素。

关于java - HashMap containsKey() 方法不适用于某些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29996805/

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