#java
#java
Вопрос:
Это мое школьное задание. Я не знаю, как это решить, потому что метод equals позволяет передавать только один параметр. Пожалуйста, дайте мне несколько советов.
Вот вопрос:
Добавьте метод public boolean equals(Object other), который возвращает true, когда содержимое двух объектов AList одинаково. Обратите внимание, что 2 объекта AList одинаковы, если они имеют одинаковое количество элементов, и каждый элемент в одном объекте равен элементу в соответствующем местоположении в другом объекте (15 баллов).
Описанный выше метод должен быть добавлен в LList2.java
Класс AList
public class AList<T> implements ListInterface<T> {
private T[] list; // array of list entries
private int numberOfEntries;
private static final int DEFAULT_INITIAL_CAPACITY = 25;
public AList() {
this(DEFAULT_INITIAL_CAPACITY); // call next constructor
} // end default constructor
public AList(int initialCapacity) {
numberOfEntries = 0;
// the cast is safe because the new array contains null entries
@SuppressWarnings("unchecked")
T[] tempList = (T[]) new Object[initialCapacity];
list = tempList;
} ......
LList2.java
public class LList2<T> implements ListInterface<T> {
private Node firstNode; // head reference to first node
private Node lastNode; // tail reference to last node
private int numberOfEntries;
public LList2() {
clear();
} // end default constructor
public final void clear() // NOTICE clear is not final in interface and that is OK
{
firstNode = null;
lastNode = null;
numberOfEntries = 0;
} ......
Комментарии:
1. Каковы ваши попытки?
2. Либо вы можете переопределить метод equals (), либо использовать comparator
3. Следуйте инструкциям, начните с создания метода, который возвращает true, если размеры совпадают, и false, если они не совпадают, затем разверните этот метод, чтобы проверить размер и первый элемент, затем начните использовать циклы
4. еще один совет, найдите instanceof` и приведите
5. Я проголосовал против, потому что это в основном «пожалуйста, сделайте мою домашнюю работу»-Вопрос
Ответ №1:
Это метод экземпляра — он сравнивает объект, переданный в качестве параметра, с объектом, для которого он вызывается (он же this
). Обратите внимание, что вам явно не нужно вызывать this
, но я оставил это там, чтобы сделать код более понятным:
@Override
public boolean equals(Object other) {
// Check that other is even an AList
if (!(other instanceof AList)) {
return false;
}
// If it is, cast it and compare the contents:
AList otherAList = (AList) other;
// Compare the lenghts of the arrays
if (this.numberOfEntires != otherAList.numberOfEntries) {
return false;
}
// Compare the contents of the arrays:
for (int i = 0; i < this.numberOfEntries; i) {
if (!this.list[i].equals(otherAList.list[i])) {
return false;
}
}
// Didn't find a reason why the two aren't equal, so they must be:
return true;
}
Комментарии:
1. вы не должны делать домашнее задание другим парням… Это не входит в намерения StackOverflow.
2. было бы лучше использовать интерфейс вместо конкретной реализации
3. @Wisthler Это вопрос решения. Следует ли считать равными
AList
и aSomeOtherList
с одинаковой длиной и одинаковым содержимым? Если это так, обязательно используйте интерфейс. Если нет, вы должны придерживаться конкретного класса. В любом случае приведение должно соответствоватьinstaceof
проверке.4. @Mureinik действительно, это зависит от требований. Что не очень понятно в данном контексте, но при чтении между строк, цель упражнения, вероятно, состоит в том, чтобы сделать это на уровне интерфейса