2015-11-29 2 views
1

Можете ли вы помочь мне с этим?Java Сравнение полей по итерации (N) Количество объектов

Я пытаюсь сравнить поля из списка объектов (n).

Чтобы быть более ясными, вот пример.

ArrayList<TestObjectType> listOfObjects = new ArrayList<TestObjectType>(); 
    TestObjectType itemA = new TestObjectType(); 
    itemA.setID(1); 
    TestObjectType itemB = new TestObjectType(); 
    itemA.setID(2); 
    TestObjectType itemC = new TestObjectType(); 
    itemA.setID(3); 

    //do compare here 
    if (2 == listOfObjects.size()) 
    { TestObjectType itemA = listOfObjects.get(0); 
     TestObjectType itemB = listOfObjects.get(1); 
     if (itemA.getID != itemB.getID) 
     { //do something here 
      ; 
     } 
    } 
    else if (3 == listOfObjects.size()) 
    { TestObjectType itemA = listOfObjects.get(0); 
     TestObjectType itemB = listOfObjects.get(1); 
     TestObjectType itemC = listOfObjects.get(2); 
     if ((itemA.getID != itemB.getID) || 
      (itemA.getID != itemC.getID) || 
      (itemB.getID != itemC.getID)) 
     { //do something here 
      ; 
     } 
    } 
    // so on and so forth until all (n) number of objects has been compared 

Вопрос в том, как я могу удовлетворить итерацию любого (n) количества объектов в списке?

+0

Почему не исполнители Equals() и хэш-код() и использование множество ? – SklogW

ответ

1

Похоже, что вы хотите, чтобы сравнить все пары элементов из списка и сделать что-то, если по крайней мере одна пара имеет различные идентификаторы:

boolean found = false; 
for (int i = 0; i < listOfObjects.size() && !found; i++) { 
    for (int j = i+1; j < listOfObjects.size() && !found; j++) { 
     if (listOfObjects.get(i).getID != listOfObjects.get(j).getID) 
      found = true; 
    } 
} 
if (found) { 
    // do something 
} 
+0

Было бы возможно, что ваше решение может сравнивать одни и те же объекты. Я прав? –

+0

@VincentMercadoSy Нет, 'j' всегда выше, чем' i' – Eran