Надеюсь, мое название объясняет, что я пытаюсь сделать. Я создал LinkedList:Справка по программе Palindrome: LinkedList объектов, содержащих массивы двойников.
private LinkedList<MyVector> list = new LinkedList();
Я Потом добавляется в список с помощью конструктора класса палиндром, который я создал:
//creates arrays of doubles inside of MyVector Objects.
public Palindrome(){
double[] a1 = {3.0, 4.0, 3.0};
double[] a2 = {3.5, 4.5, 3.5};
MyVector a = new MyVector(a1);
MyVector b = new MyVector(a2);
MyVector c = new MyVector(a1);
MyVector d = new MyVector(a2);
MyVector e = new MyVector(a1);
//adds the MyVector Objects into the LinkedList
list.add(a);
list.add(b);
list.add(c);
list.add(d);
list.add(e);
}
Я сейчас создает метод, который будет сравнивать указатели из двух различных списка итераторов через список «MyVector» объекты:
public boolean isPalindrome(){
//iterates through LinkedList From Beginning to End
ListIterator<MyVector> itr1 = list.listIterator();
//iterates through LinkedList from End to Beginning
ListIterator<MyVector> itr2 = list.listIterator(list.size());
while (itr1.next() == itr2.previous()){
return true;
}
return false;
}
Моя проблема заключается в том, что, когда я создаю новый палиндром объект в основной метод, а затем проверить, есть ли список объектов на самом деле палиндром, я всегда получаю вывод, что «Список не является палиндром» (когда я специально сделал объекты в списке для представления палиндрома для моего тест, если вы посмотрите на мой палиндром конструктор):
Palindrome pal = new Palindrome();
if(pal.isPalindrome()){
System.out.println("It's a palindrome");
} else {
System.out.println("It's not a palindrome");
}
Спасибо за ответ, теперь я понимаю, почему я получаю вывод, который я получаю сейчас. Не будет ли метод equals иметь периметр (ListIterator temp), так как я сравниваю два итератора. Прошу прощения, если это не имеет никакого смысла. Я все еще новичок со всем этим, поэтому мне трудно понять, что метод equals, который вы мне сделали. –
user2994120
Следующий \ предыдущий метод дает вам объект из вашего списка и не является объектом ListIterator. Метод equals по умолчанию сравнивает оба объекта hashcode. Функция equals, представленная мной, сравнивает значения для объектов, а не ее хэш-код. Я добавил оператор instanceof, чтобы проверить, что объект является объектом MyVector перед его литьем. – Myth1c