我有两个String数组,它们具有几乎相同的数据,但我想要做的是逐个比较这些值,因为它们具有不同的长度。 这是我的代码,但正如您所看到的那样效率不高。
String arrayIdent[] = {"abanico","camboya","retrato","ovalado"};
String arrayDatos[] = {"camboya","retrato","ovalado","granizo","riachuelo"};
for(int k = 0; k < Constantes.arrayDatos.length; k++)
{
if(arrayIdent[k].equals(arrayDatos[k]))
System.out.println(arrayIdent[k] + " equal " + arrayDatos[k]);
else
System.out.println(arrayIdent[k] + " is not equal to " + arrayDatos[k]);
}
我可以帮助解决这个问题。
答案 0 :(得分:1)
看看这两个列表,我猜你期望“camboya”,“retrato”和“ovalado”在某个时刻显示为相同,因为你说逐个搜索。
如果是这种情况,你需要在第一个中使用第二个for循环来比较所有元素。
for (int i = 0; i < arrayDatos.length; i++){
for (int k = 0; k < arrayIdent.length; k++){
if(arrayIdent[k].equals(arrayDatos[i]))
System.out.println(arrayIdent[k] + " equal " + arrayDatos[i]);
}
}
答案 1 :(得分:0)
正如有人提到的,arrayDatos
比arrayIndent
长。这将抛出ArrayIndexOutOfBounds
异常。您的方法非常有效,但您可能希望将循环编写为:
for (int k=0; k<Math.min(Constantes.arrayDatos.length, Constantes.arrayIndent.length); k++)
答案 2 :(得分:0)
您想要在第k个位置或一个元素与其他元素进行逐元素比较吗?如果一个反对其他,那么源代码:
String arrayIdent[] = { "abanico", "camboya", "retrato", "ovalado" };
String arrayDatos[] = { "camboya", "retrato", "ovalado", "granizo", "riachuelo" };
boolean found;
for (int k = 0; k < arrayIdent.length; k++)
{
found = false;
for (int j = 0; j < arrayDatos.length; j++)
if(arrayIdent[k].equals(arrayDatos[j]))
{
System.out.println(arrayIdent[k] + " is equal to " + arrayDatos[j]);
found = true;
}
if (!found)
System.out.println(arrayIdent[k] + " is not equal to any element");
}
如果要比较整个数组,那么equal()方法也可以使用不同的长度。