【问题标题】:Delete/Add a specific Element(int) in an Array删除/添加数组中的特定元素(int)
【发布时间】:2015-10-02 19:24:45
【问题描述】:

这个子类应该能够让用户选择一个特定的员工 ID,在命令行中输入它并选择将其添加到数组列表中,从数组列表中删除它,或者只是请求查看有关特定的员工 ID。我已经尝试了很多事情,但一点运气都没有。

package WorkIDServerStorage;

public class EmployeeList{
    private Employee[] theEmployee;
    private int arrayEmployee;

    public EmployeeList(){
        theEmployee = new Employee[100];
        arrayEmployee = 0;
    }

    public EmployeeList(int arraySize){
        theEmployee = new Employee[arraySize];
        arrayEmployee = 0;
    }

    public void setTheEmployee(Employee[] inputTheEmployee){
        theEmployee = inputTheEmployee;
    }

    public void setArrayEmployee(int inputArrayEmployee){
        arrayEmployee = inputArrayEmployee;
    }

    public Employee[] getTheEmployee(){
        return theEmployee;
    }

    public int getArrayEmployee(){
        return arrayEmployee;
    }

    public Employee addEmployeeID(Employee employeeAdd){
        return theEmployee[arrayEmployee++] = employeeAdd;
    }

    public Employee deleteEmployeeID(int employeeDelete){
         //Delete an employee record with a 
         //specified record number from the array
    }

    public Employee readEmployeeInfo(int employeeRead){
        //Read the employee data for a specified record number 
        //From the array and display this data to the screen
    }

    @Override
    public String toString(){
        StringBuilder sb = new StringBuilder();
        for(int x = 0; x < arrayEmployee; x++){
            sb.append(theEmployee[x].toString()).append("\n");
        }return sb.toString();
    }
}

【问题讨论】:

  • 有什么问题?什么不工作?
  • 想出一种方法来允许用户从数组列表中删除和读取特定员工 ID 时遇到了麻烦...如果这有意义的话

标签: java arrays add element


【解决方案1】:

数组是固定长度的数据结构。它们很像一座多层建筑。你不能从建筑物的中间取出一层楼,然后期望它站起来。

ArrayList(正如其他人指出的那样)是动态结构,很像火车。您可以根据需要取出隔间,您可以重新配置它。

事实上,我建议使用 List,而是使用将 ID 映射到员工记录的 Map。假设您的列表中有以下员工 -

  1. 爱丽丝
  2. 鲍勃
  3. 约翰
  4. 露丝

如果您删除“Bob”,John 和 Ruth 的 ID 将会改变。不是一个好习惯。如果您改用 Map,每个人都可以保留分配给他们的 ID,而您只需通过增加键(或 ID)来添加到地图。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    为了能够从数组中动态添加或删除,您应该使用 ListArrayList。典型的数组在运行时不提供删除或添加,因为它们是固定大小的,如果您想通过处理索引或其他技巧来控制过程,您可能最终会陷入混乱且难以维护的代码。 另一方面,java中的Lists是动态调整大小的,并提供add()、 remove()get()等方便的方法,我认为最适合你。

    【讨论】:

      【解决方案3】:

      您应该使用 ArrayList 来动态添加和删除数组中的条目。

      通过执行以下操作将您的 theEmployee 数组变为 ArrayList:

      ArrayList<Employee> theEmployee = new ArrayList<Employee>();
      

      您可以通过以下方式添加和删除:

      public boolean addEmployeeID(Employee employeeAdd){
          return theEmployee.add(employeeAdd);
      }
      
      public Employee deleteEmployeeID(int employeeDelete){
           return theEmployee.remove(employeeDelete)
      }
      

      我将 addEmployeeID 的返回类型更改为布尔值,因为 ArrayList 在添加对象时返回布尔值。

      对于删除,intemployeeDelete 将是数组中对象的索引。当您移除一个对象时,所有剩余的对象都会向左移动。所以如果你有一个数组 [1,2,3] 并且你删除了 2,它就会变成 [1,3]。索引已移动。

      您也可以删除一个对象,这样应该可以:

      public boolean deleteEmployeeID(Employee employeeDelete){
           return theEmployee.remove(employeeDelete)
      }
      

      其中employeeDelete 是一个Employee,函数返回一个布尔值。

      【讨论】:

        猜你喜欢
        • 2018-05-05
        • 2016-11-11
        • 2019-06-03
        • 1970-01-01
        • 2019-07-16
        • 2021-04-21
        • 2016-08-02
        相关资源
        最近更新 更多