2016-11-08 26 views
-2

So habe ich ein Programm, das Mitarbeiterdaten wie ID #, Name, Startdatum, etc. gespeichert werden soll. Wenn der Benutzer eine Mitarbeiter-ID eingeben und drückt die Entfernen-Taste die Arraylist sollte gesucht und wenn diese Mitarbeiter ID in der Arraylist existiert, sollten alle Daten dieses Mitarbeiters aus der Arraylist gelöscht werden. Ich bin in der Lage, alle Daten hinzuzufügen und anzuzeigen, aber ich kann nicht herausfinden, wie die Arraylist für die ID-Nummer suchen und alle Daten des Mitarbeiters löschen. Jede Hilfe mit diesem würde geschätzt werden. Ich habe meinen Code bis jetzt für den Entfernungsbutton, sowie einigen anderen Code beigefügt, um zu zeigen, wie die Daten gespeichert werden.Entfernen Sie Daten aus Arraylist von Objekten

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

...

Schaltfläche Entfernen Code:

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."); 
    } 
} 

Schaltfläche Code hinzufügen:

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

Mitarbeiter Klasse:

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

Überlagert die 'Employee' Klasse die' equals() 'Methode? Wenn nicht, wird 'contains()' nicht funktionieren. Auch die Verwendung desselben Namens für eine Klasse und eine Variable ist sehr schlecht. Ihre Mitarbeiterklasse sollte Mitarbeiter sein. Drittens ist eine "Liste" in keiner Weise "assoziativ". Dazu benötigen Sie eine 'Map', die einen Schlüssel mit einem Wert verknüpft. –

Antwort

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

Arraylist mit Objekten enthält definitiv nicht String-ID.

P.S. Wie Jim sagte, muss entweder die Employee-Klasse die equals-Methode überschreiben, die nur id (keine gute Idee) vergleichen muss, oder die Map < String, Employee > verwenden, um Ihre Liste zu behalten. dann können Sie einfach remove-Methode aufrufen und müssen nicht überprüfen, ob der Schlüssel dort ist oder nicht.

Verwandte Themen