我可能没有比我更应该有,甚至可能使它过于复杂。但我会让你们决定。
我做的第一件事就是使用HashSets来存储匹配和不匹配的值。这很有用,因为它们只存储每个值中的一个。
String[] number_one = { "[email protected]" , "+122637867" , "486" , "smbr" , "9946567" };
String[] number_two = { "+122637867" , "486" , "nrkZone" , "smbr"};
HashSet<String> matched = new HashSet<String>();
HashSet<String> mismatched = new HashSet<String>();
现在我有很多循环,这部分我想你可以简化成也许只是一个。但是,唉,它的工作。现在至为什么。那么,这种代码的工作方式是,假设数组中的所有值都没有匹配,除非证明相反。所以它只是把它们放到了mismatched
HashSet中。
for (int i = 0; i < number_one.length; i++) {
mismatched.add(number_one[i]);
}
for (int i = 0; i < number_two.length; i++) {
mismatched.add(number_two[i]);
}
现在你需要嵌套两个for循环,通过两个阵列迭代,并在这个过程中检查是否存在任何匹配,如果有一个,它被添加到matched
HashSet的。
for(int n = 0; n < number_one.length; n++) {
for (int m = 0; m < number_two.length; m++) {
if(number_one[n].equals(number_two[m])){
matched.add(number_one[n]);
}
}
}
现在,我们只是删除了所有我们知道的有来自mismatched
变量,它已经拥有了所有可能的值相匹配的值。我们只是删除我们所知道的匹配。
for (int i = 0; i < matched.size(); i++) {
mismatched.remove(matched.toArray()[i]);
}
在这里,我们只是打印出一个半整洁的时尚。
System.out.print("Matched: ");
for (int i = 0; i < matched.size(); i++) {
System.out.print(matched.toArray()[i] + " ");
}
System.out.println("");
System.out.print("Mismatched: ");
for (int i = 0; i < mismatched.size(); i++) {
System.out.print(mismatched.toArray()[i] + " ");
}
你到底想要什么结果? –
使用“equals”来比较字符串值。同样,因为你的代码是,你将只匹配令牌,如果他们在阵列中具有相同的位置。它是你想要的吗? – Berger
不,我想找到匹配的字符串从两个阵列和无与伦比的字符串.. @HojjatImani –