比较不同长度的数组?

时间:2013-09-05 18:16:47

标签: java

我有两个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]);
}

我可以帮助解决这个问题。

3 个答案:

答案 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)

正如有人提到的,arrayDatosarrayIndent长。这将抛出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()方法也可以使用不同的长度。