gpt4 book ai didi

java - 比较两个字符串数组,分别返回匹配的字符串和不匹配的字符串

转载 作者:行者123 更新时间:2023-12-02 04:06:31 25 4
gpt4 key购买 nike

我正在开发一个Android应用程序。我正在尝试比较两个字符串数组并返回匹配项和不匹配项。我尝试了几种解决方案,但根本不起作用。我需要分别匹配和不匹配。

这是带有示例数据的数组

String[] number_one = { "info@fn.ca" , "+122637867"  , "486" , "smbr" , "9946567" };

String[] number_two = { "+122637867" , "486" , "nrkZone" , "smbr'};

这是我正在处理的示例代码。

          for(int n =0; n < number_one.length; n++){

if(number_one[n] == number_two[n]){
Log.d("Cursor" ,number_one[n]);
}else{
Log.d("Cursor" ,number_two[n]);
}

}

我想要像(示例数据)这样的输出

 Matched : +122637867 , 486 , smbr
Mismatched : info@fn.ca , nrkZone , 9946567

最佳答案

我可能做了超出我应该做的事情,甚至可能让它变得过于复杂。但我会让你们决定。

我做的第一件事是使用 HashSet 来存储匹配和不匹配的值。这很有用,因为它们只存储每个值之一。

String[] number_one = { "info@fn.ca" , "+122637867"  , "486" , "smbr" , "9946567" };
String[] number_two = { "+122637867" , "486" , "nrkZone" , "smbr"};


HashSet<String> matched = new HashSet<String>();
HashSet<String> mismatched = new HashSet<String>();

现在我有相当多的 for 循环,我认为这部分你可以简化为也许只有一个。但可惜的是,它确实有效。现在说说为什么。好吧,这段代码的工作方式是假设数组中的所有值都没有匹配项,除非另有证明。所以它只是将它们全部放入不匹配 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] + " ");
}

关于java - 比较两个字符串数组,分别返回匹配的字符串和不匹配的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34237527/

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