Я начал этот путь с реализации простого поиска в массиве для назначения hw, не зная, что мы можем использовать ArrayList. Я понял, что в нем есть некоторые ошибки, и решил, что я все еще буду пытаться узнать, что это за ошибка, прежде чем использовать ArrayList. У меня в основном есть класс, где я могу добавлять, удалять или искать в массиве.
public class AcmeLoanManager
{
public void addLoan(Loan h)
{
int loanId = h.getLoanId();
loanArray[loanId - 1] = h;
}
public Loan[] getAllLoans()
{
return loanArray;
}
public Loan[] findLoans(Person p)
{
//Loan[] searchedLoanArray = new Loan[10]; // create new array to hold searched values
searchedLoanArray = this.getAllLoans(); // fill new array with all values
// Looks through only valid array values, and if Person p does not match using Person.equals()
// sets that value to null.
for (int i = 0; i < searchedLoanArray.length; i++) {
if (searchedLoanArray[i] != null) {
if (!(searchedLoanArray[i].getClient().equals(p))) {
searchedLoanArray[i] = null;
}
}
}
return searchedLoanArray;
}
public void removeLoan(int loanId)
{
loanArray[loanId - 1] = null;
}
private Loan[] loanArray = new Loan[10];
private Loan[] searchedLoanArray = new Loan[10]; // separate array to hold values returned from search
}
При тестировании я думал, что это сработало, но я думаю, что перезаписываю переменную-член после выполнения поиска. Сначала я думал, что смогу создать новый метод Loan [] и вернуть его, но это не сработало. Тогда я подумал, что могу иметь два массива. Один, который не изменится, а другой только для искомых значений. Но я думаю, что я чего-то не понимаю, например, мелкое или глубокое копирование ??? ....