gpt4 book ai didi

java - 在Java中不使用ArrayList以数组形式返回搜索结果

转载 作者:行者123 更新时间:2023-12-02 08:33:10 25 4
gpt4 key购买 nike

我开始在数组中实现简单的硬件分配搜索,而不知道我们可以使用 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[] 并返回它,但这似乎不起作用。然后我想我可以有两个数组。一个不会改变,另一个仅用于搜索值。但我认为我不理解一些东西,比如浅复制与深复制???....

最佳答案

getAllLoans 的返回值会覆盖 searchedLoanArray 引用,这意味着 LoanArray 和 searchedLoanArray 都指向同一个底层数组。尝试将 searchedLoanArray 设为局部变量,然后使用 Arrays.copyOf。如果您不想在作业中使用标准函数,请手动创建一个与loanArray 大小相同的新Loan 数组,然后循环并复制这些值。

关于java - 在Java中不使用ArrayList以数组形式返回搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2734386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com