2013-04-14 6 views
0

Мне нужно проверить, все ли «маркеры» в arraylist в порядке возрастания.Сравнение элементов в arraylist

private E[] data;  // where the data is stored 
private int size;  // how many items have been added to the list 

public TopSpinArray(int numTokens, int spinSize) 
{ 
    super(numTokens, spinSize); 

    data = (E[])(new Object[numTokens]); 
    size = 0; 
} 

public boolean isSolved() 
{  
    for(int i = 0; i < numTokens; i++) 
    { 
     if(data[i] < data[i+1]) 
     { 
      return true; 
     } 
    } 
    return false; 
} 

при компиляции, он говорит «плохие типы операндов для бинарного оператора„<“ первого типа: Е; второй тип: E»

как я могу проверить, чтобы увидеть, если они увеличиваются?

+1

Пожалуйста, добавьте объявление о ' data '- нам нужно знать, какой именно тип, если мы хотим вам помочь. – atk

+0

Ваша петля выйдет, как только первый элемент окажется меньше секунды. Вам нужно вернуть false, как только вы увидите элементы наоборот. wrt ваша проблема с компиляцией см. комментарий atk. – akostadinov

+0

Это 'массив', а не' ArrayList'. – Keppil

ответ

4

Оператор < действителен только для определенных типов объектов. Для того, чтобы иметь возможность сравнивать любой сопоставимый тип объекта (я беру ваш E, означает, что ваши маркеры действительно реализовать Comparable, так как в противном случае ваш вопрос не имеет смысла), вы можете использовать compareTo():

for(int i = 0; i < numTokens - 1; i++) { 
    if(data[i].compareTo(data[i+1]) > 0) { 
     return false; 
    } 
} 
return true; 
+0

@awashburn: они должны быть в порядке возрастания, поэтому, если 'compareTo()' возвращает что-то '> 0', что-то не так. – Keppil

Смежные вопросы