如何在删除一个值后对数组进行排序?
e.g。 {1,2,3,4,5}
- > {1,2,null,4,5}
- > {1,2,4,5,null}
。
public boolean removeNumber(int accountNumber) {
for(int i = 0; i < Account.length; i++) {
if(Account[i].getAccountNumber() == (accountNumber)) {
Account[i] = null;
}
答案 0 :(得分:1)
由于您的原始数组已经排序,并且假设只有一个Account
可以具有该特定accountNumber
,因此无需再次对数组进行排序。只需找到要删除的元素,然后将该元素后面的所有内容移动到一个位置,并将新释放的元素置空。
我已将Account
字段重命名为accounts
以遵循Java命名约定,以便更清楚地区分数组(accounts
)和类({{1}对于未来的开发人员来说,以及Java编译器都是如此。
Account
现在,如果你坚持对数组进行排序,你可以在Java 8 +中这样做:
public boolean removeNumber(int accountNumber) {
for (int i = 0; i < accounts.length; i++) {
if (accounts[i].getAccountNumber() == accountNumber) {
System.arraycopy(accounts, i + 1, accounts, i, accounts.length - i - 1);
accounts[accounts.length - 1] = null;
return true; // Found and removed
}
}
return false; // Not found, so nothing removed
}
答案 1 :(得分:0)
您可以按照这种方式实现这一目标:
accounts
您正在寻找的accountNumber
null
array
array
对custom Comparator
进行排序:
null
,则必须在最后not-null
,则比较他们的accountNumber
public boolean removeNumber(int accountNumber) {
for (int i = 0; i < Account.length; i++) {
if (Account[i].getAccountNumber() == accountNumber) {
Account[i] = null;
}
}
Arrays.sort(Account, (o, p) -> {
if (o == null)
return 1;
if (p == null)
return -1;
return Integer.compare(o.getAccountNumber(), p.getAccountNumber());
});
return true;
}
提示:
camelCase
代表attriutes ==&gt; Account[]
变为account[]
.equals()
,int
==
是对的