2013-09-02 6 views
-2

У меня есть два массива переменной длины. предположим, что a имеет длину 10 и b имеет длину 12. Мне нужно сравнить 0-й индекс a и b. а затем 1-й индекс a и b. аналогично 2,3,4 ..Как сравнить элементы в массиве в java?

if(a[0]==b[0]){//some code} 
if(a[1]==b[1]){//some code} 
... 
if(a[length]==b[length]{//some code} 

. Как я могу положить его в цикле и проверить?

+0

Это возможно простым для цикла, попробуйте. –

+0

Это зависит от того, что вы хотите сделать. Если у вас есть, скажем, 10 индексов, и вам нужен уникальный код для каждого из них, вам нужно будет найти способ, как делегаты в C#. Но я сильно сомневаюсь, что у вас есть такой случай, это более высокий шанс, что вы неправильно структурировали свою программу. –

ответ

6
int lim=Math.min(a.length, b.length); 
for(int i=0; i<lim; i++){ 
    //do comparison 
} 

Это предполагает, что мы не знаем, какой массив длиннее.

+0

-1 - выражение 'max' оценивается каждый раз в цикле, это (обычно) неправильная практика – Dariusz

+2

@Dariusz №. Компилятор достаточно умен, чтобы выполнять вычисления только один раз. – Maroun

+0

Я знаю, что оптимизация компилятора будет вычислять его только один раз на C, однако JIT Java JIT может помешать этому. –

3

Вам понадобится переменная, которая содержит минимум lentgh ot a и b, а затем с помощью простой петли сравните элементы с индексом i.

int[] a = ...; 
int[] b = ...; 
int min = Math.min(a.length, b.length); 
for (int i = 0; i < min; i++) { 
    if (a[i] == b[i]) { 
    //do your stuff 
    } 
} 

Обратите внимание, что верхний фрагмент является действительным только если ваши массивы состоят из примитивов (как int).

Если ваши массивы состоят из объектов, вы должны использовать .equals() в заявлении if.

Object[] a = ...; 
Object[] b = ...; 
int min = Math.min(a.length, b.length); 
for (int i = 0; i < min; i++) { 
    if (a[i].equals(b[i])) { 
    //do your stuff 
    } 
} 
+0

+1 Это более эффективно, чем ответ гексафракции, поскольку Math.min не оценивается каждый раз, когда проверяется состояние цикла. –

+0

Что делать, если у него есть особые условия для каждого индекса массива (я сомневаюсь, но ОП не определил, что делать) –

+1

@maremp Мы не можем охватить все аспекты здесь.Основываясь на намеках, логические решения, приведенные здесь, OP должны преобразовать свою программу таким образом. –

1

Вы, скорее всего:

  • хочет получить меньшую длину и использовать его
  • следует использовать equals() метод вместо ==

А вот какой-то код:

int minLen = arr1.length>arr2.length?arr2.length:arr1.length; 
for (int i=0; i< minLen; i++) { 
    if (arr1[i].equals(arr2[i])) { 
    // some code 
    } 
} 
0

Что ур пытается достичь, если имеет длину 10, б имеет длину 12, а затем, как Ур сравним б [10] и B [11], или и хотите:

int length = a.length > b.length? b.length:a.length; 
for(int i=0; i<length; i++) { 
    // compare 
} 
Смежные вопросы