Java 删除值后对数组排序

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] =

删除一个值后如何对数组排序

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;
        }
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;
    }
    

    小贴士:

    • 遵循命名约定:
      camelCase
      for attriutes==>
      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)));