Jak usunąć z HashMap.

0

Witam. Mam pytanie jak zrobić żeby metoda removeWorkers została uwzględniona kiedy użyje metody listWorkers.
Pozdrawiam

package Firma.Main;

import java.util.*;

public class Firma {





    private List<Workers>workers=new ArrayList<>();
    private Map<String,Workers>person=new HashMap<>();

    Scanner scanner=new Scanner(System.in);
public void addWorkers(){
    System.out.println("Dodaj pracownika");
    System.out.println("Podaj imię: ");
    String name= scanner.next();
    System.out.println("Podaj nazwisko: ");
    String userName=scanner.next();
    System.out.println("Podaj płeć: ");
    char sex=scanner.next().charAt(0);
    System.out.println("Podaj numer działu: ");
    int numberDepartment=scanner.nextInt();
    System.out.println("Podaj płace: ");
    int salary=scanner.nextInt();
    System.out.println("Podaj liczbę dzieci: ");
    int childNumbers=scanner.nextInt();
    System.out.println("Podaj wiek");
    int old=scanner.nextInt();
    System.out.println("Podaj stan cywilny (Y/N)");
    String maritalStatusString=scanner.next();
    boolean maritalStatus;
    if (maritalStatusString.equals('Y')){
        maritalStatus=true;
    }else {
        maritalStatus=false;
    }
    Workers addWorkers=new Workers( name,userName, sex, numberDepartment,
            salary, old, childNumbers, maritalStatus);
    workers.add(addWorkers);

    person.put(userName,addWorkers);


}
    public void listWorkers(){

    for (Workers worker:workers){
       
        worker.listWorkersInformation();
    }

    }
    public void displayWorkers(){
        System.out.println("Podaj nazwisko do wyszukania");
        String userName=scanner.next();
        Workers worker=person.get(userName);
        worker.listWorkersInformation();
   }
   public void removeWorkers(){
       System.out.println("Podaj nazwisko do usunięcja");
       String userName1=scanner.next();
       Workers worker=person.remove(userName1);
       if (worker==null){
           System.out.println("Pracownik nie istnieje");
       }



   }
}
2

Źle sformatowales kod.

0

Nie zrozumiałem pytania w części " została uwzględniona", ale...
Remove workers usuwa z mapy person a nie z listy workers (wydaje mi się, że z obu powinna).
Ogólnie uważam, że powinieneś używać person albo workers (jedno do usunięcia, żeby nie trzeba było pilnować ich spójności między sobą).

0

podstawowe pytanie - jaki jest powód trzymania ich w dwóch osobnych kontenerach?

a żeby to działało to zmień to

       if (worker==null){
           System.out.println("Pracownik nie istnieje");
       }

na coś takiego

       if (worker==null){
           System.out.println("Pracownik nie istnieje");
       }
       else {
           workers.Remove(worker); //nie mam pojęcia jak nazywa się metoda usuwająca element z listy w javie 
       }
0

Ok. Dzięki wielkie. Działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1