Вы используете дженерики в ArrayList:
ArrayList<Integer> alist = new ArrayList<Integer>();
Почему бы не использовать его в:
LinkedList<Integer> arr2 = new LinkedList(Arrays.asList(array2));
и
Iterator<Integer> x = arr2.listIterator(arr2.indexOf(array1[0]));
Вместо
LinkedList arr2 = new LinkedList(Arrays.asList(array2));
и
Iterator x = arr2.listIterator(arr2.indexOf(array1[0]));
Другое решение (бесполезное в вашем случае) без дженериков, вы должны разыграть каждый объект:
alist.add((Integer) x.next());
^^^^^^^^^^^^^^^^^^
alist.add((Integer) arr2.peek());
^^^^^^^^^
if(array1[i] != (Integer) arr2.get(i)){
^^^^^^^^^
Другое решение
Поскольку @ Aominè и другие упоминают, что у вас есть несколько проблем, которые вам нужно исправить, я бы просто решил вашу проблему другим способом:
public static Boolean isRotation(int[] array1, int[] array2) {
List<Integer> list1 = Arrays.stream(array1).boxed().collect(Collectors.toList());
List<Integer> list2 = Arrays.stream(array2).boxed().collect(Collectors.toList());
int size = list1.size();
for (int i = 0; i < size; i++) {
if (list1.equals(list2)) {
return true;
}
Collections.rotate(list2, -1);
}
return false;
}
Рассмотриму вас есть эти два массива (я считаю, что они не пустые и имеют одинаковую длину)
array1 = {4, 5, 6, 7, 1, 2}
array2 = {1, 2, 4, 5, 6, 7}
для каждого элемента в массиве1 переместите его в конец и проверьте, равен ли он второму массиву не:
Первая итерация:
array1 = {4, 5, 6, 7, 1, 2}
array2 = {1, 2, 4, 5, 6, 7}
не равна
Вторая итерация:
array1 = {4, 5, 6, 7, 1, 2}
array2 = {2, 4, 5, 6, 7, 1}//move 1 to the end
не равна
Вторая итерация:
array1 = {4, 5, 6, 7, 1, 2}
array2 = {4, 5, 6, 7, 1, 2}//move 2 to the end
Равен (и разрыв)
Если совпадений нет и Итерация окончена, вернуть false
meanне равно