Java 删除值后对数组排序
删除一个值后如何对数组排序 e、 g.Java 删除值后对数组排序,java,arrays,sorting,Java,Arrays,Sorting,删除一个值后如何对数组排序 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] =
{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;
}
public boolean removeNumber(int accountNumber){
对于(int i=0;i
您可以通过以下方式实现:
帐户编号的帐户
数组中将它们设置为null
自定义比较器对数组进行排序
:
- 如果一个元素为
null
,它必须在末尾
- 如果两者都
不为空
则比较它们的帐号
public boolean removeNumber(int accountNumber){
对于(int i=0;i{
如果(o==null)
返回1;
if(p==null)
返回-1;
返回整数.compare(o.getAccountNumber(),p.getAccountNumber());
});
返回true;
}
小贴士:
- 遵循命名约定:
for attriutes==>camelCase
变为Account[]
Account[]
- 在比较对象时使用
,因为.equals()
int
是正确的==
帐户可以具有该特定的帐户编号,因此无需再次对数组排序。只需找到要删除的元素,然后将该元素之后的所有内容向下移动一个位置,并清空新释放的元素即可
我已经将Account
字段重命名为accounts
,以遵循Java命名约定,从而更清楚地区分数组(accounts
)和类(Account
),以供将来查看代码的开发人员和Java编译器使用
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
}
什么是Account
?它是一个Integer[]
?Account是Account类型的数组,那么为什么要将一个Account与一个数字进行比较?这是另一个我还没有解决的问题。但是数字必须是int。如果Account[I]
不能与int进行比较(比较是与==而不是=)我建议你更好地编辑和解释,否则你的问题很快就会被解决;)你为什么要删除一个帐户?因为什么因素?(给帐户类)谢谢!这就是我要找的:d
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
}
Arrays.sort(accounts, Comparator.nullsLast(Comparator.comparing(Account::getAccountNumber)));