2016-11-08 37 views
-2

因此,我有一個旨在存儲員工記錄的程序,例如ID#,姓名,開始日期等。當用戶輸入員工ID號並按下刪除按鈕時,數組列表應該是如果該員工ID存在於數組列表中,那麼該員工的所有數據都應該從數組列表中刪除。我能夠添加並顯示所有數據,但我無法弄清楚如何搜索ArrayList中的ID號碼,然後刪除該員工的所有數據。任何幫助,這將不勝感激。我已經附加了我的代碼到目前爲止的刪除按鈕,以及一些其他代碼,以顯示數據如何存儲。從對象的數組列表中刪除數據

public class EmployeeRecords extends javax.swing.JFrame { 
ArrayList <employees> employees = new ArrayList <employees>(); 

...

刪除按鈕代碼:

private void removeButtonActionPerformed(java.awt.event.ActionEvent evt) {            
    int index; 
    String id = idInput.getText(); 
    boolean idCheck = employees.contains(id); 

    if (idCheck = true){ 
     index = employees.indexOf(id); 
     employees.remove(index); 
    } 
    else { 
     errorLabel.setText("Employee not found. Please try again."); 
    } 
} 

添加按鈕代碼:

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    employees e; 
    String id, firstName, lastName, salary, startDate; 

    id = idInput.getText(); 
    firstName = firstInput.getText(); 
    lastName = lastInput.getText(); 
    salary = salaryInput.getText(); 
    startDate = dateInput.getText(); 

    e = new employees(id, firstName, lastName, salary, startDate); 
    employees.add(e); 
} 

Employee類:

class employees { 
String id, firstName, lastName, salary, startDate; 

employees (String _id, String _firstName, String _lastName, String _salary, String _startDate) { 
    id = _id; 
    firstName = _firstName; 
    lastName = _lastName; 
    salary = _salary; 
    startDate = _startDate; 
} 

}

+0

'Employee'類是否覆蓋'equals()'方法?如果不是,'contains()'不起作用。另外,對一個類和一個變量使用相同的名字是非常糟糕的做法。你的'員工'類應該是'員工'。第三,「列表」在任何意義上都不是「聯想」的。爲此,您需要一個將密鑰與值相關聯的「Map」。 –

回答

0
ArrayList <employees> employees = new ArrayList <employees>(); 
String id = idInput.getText(); 
boolean idCheck = employees.contains(id); 

對象的ArrayList絕對不包含String id。

P.S.正如Jim所說,要麼Employee類必須覆蓋equals方法,它必須只比較id(不是個好主意),或者使用Map < String,Employee >來保存你的列表。那麼你可以簡單地調用remove方法,而不需要檢查是否有關鍵。