gpt4 book ai didi

java - 尝试将数组添加到哈希表,以便我可以查看元素是否在不同的数组中匹配

转载 作者:行者123 更新时间:2023-12-01 16:23:33 25 4
gpt4 key购买 nike

我正在尝试比较两个数组列表,并且我使用嵌套循环来执行此操作。相反,我想迭代第一个数组并将元素添加到哈希表中,以便哈希表等于

{a: true, f: true, t: true, y: true} 

然后我想迭代第二个数组,看看第二个数组中的任何元素是否存在于第一个数组中。


public class Test {
public static void main(String[] args) {
Object[] array1 = {"a","f","t","y"};
Object[] array2 = {"b","u","g","a","d","f"};


findMatch(array1, array2);
}
public static void findMatch(Object[] a,Object[] b ){
for(int i = 0; i < a.length; i++){
for(int j = 0; j < b.length; j++){
if(a[i].equals(b[j])){
System.out.println("match");
}
}

}

}

}

最佳答案

首先,我建议您缩小数组的类型范围,这样就不会遇到运行时类型错误。在您的情况下,您应该将它们设为字符串数组。

如果您只想检查两个数组中是否存在某些内容。您可以只使用集合而不是哈希表,然后迭代第二个数组并打印出匹配项。

Set<String> matches = new HashSet<>(Arrays.asList(array1));

for(String s : array2){
if(matches.contains(s){
System.out.println("match");
}
}

如果您确实想要比较对象,那么想法是相同的,但是您应该注意,当您比较两个 Obect 时,equals 方法会检查两个对象是否相同驻留在相同的内存位置,这意味着它们是相同的对象。当您的数组由于字符串驻留而实际上是字符串时,它会工作得很好(前提是您不使用 new 来创建字符串)。但如果您不显式重写 hashCode()equals(),它可能不适用于其他类型。

关于java - 尝试将数组添加到哈希表,以便我可以查看元素是否在不同的数组中匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62206741/

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