Я работаю над внедрением метода, который проверяет числа максимальное количество последовательных одинаковых элементов в ArrayList:Java ListIterator осветление
public class ArrayReader<E> {
public int getMaxConsecutiveEqualElements(ArrayList<E> array){
if (array == null){
throw new IllegalArgumentException("Array is null");
}
if (array.size() == 0){
throw new IllegalArgumentException("Array has 0 elements");
}
int max = 1;
int currentMax = 0;
int index = 0;
ListIterator<E> listIterator = array.listIterator(0);
while (listIterator.hasNext()){
E currentItem = array.get(index);
E nextItem = listIterator.next();
System.out.println("Current item: "
+ "index (" + listIterator.previousIndex() + ") "
+ currentItem.toString() + " Next item: "
+ "index (" + (listIterator.previousIndex() + 1) + ") "
+ nextItem.toString());
if (currentItem.equals(nextItem)){
currentMax++;
if (currentMax > max){
max = currentMax;
}
} else {
currentMax = 1;
}
index++;
}
return max;
}
}
public static void main(String[] args){
ArrayList<Integer> array = new ArrayList<>();
array.add(2);
array.add(2);
array.add(2);
array.add(5);
array.add(5);
array.add(5);
array.add(5);
ArrayReader<Integer> intArrayReader = new ArrayReader<>();
System.out.println(intArrayReader.getMaxConsecutiveEqualElements(array));
}
Однако вывод я получаю показывает, что это на самом деле не сравнивая текущий элемент к следующему:
Current item: index (0) 2 Next item: index (1) 2
Current item: index (1) 2 Next item: index (2) 2
Current item: index (2) 2 Next item: index (3) 2
Current item: index (3) 5 Next item: index (4) 5
Current item: index (4) 5 Next item: index (5) 5
Current item: index (5) 5 Next item: index (6) 5
Current item: index (6) 5 Next item: index (7) 5
7
Что не так с этой реализацией?
Там нет ничего плохого здесь. 'currentItem' всегда равен' nextItem' с вашим кодом. – Tunaki