2016-05-03 11 views
2
public static void addToUserList(User newUser){ 

    boolean hasFound = false; 

    for (User user : users) { 
     if(user.getUserID() == newUser.getUserID()){ 
      System.out.println("DUPLICATED USER ID: " + user.getUserID() + "ALREADY EXISTS"); 
      hasFound = true; 
      break; 
     } 

    } 

    if(hasFound = false){ 
     users.add(newUser); 
    } 


} 

Wie Refactoring diesen Code? In der Benutzer-Arraylist sollte es keine doppelten Benutzer nach ID geben.Refactoring der Addiervorgang

Ich denke, mit booleschen Variablen ist ein bisschen unnötig, aber ich konnte keine bessere Lösung finden.

P.SS: Auch wenn es einen Convention für diese Art von Codierungsstilen gibt, können Sie einen Namen angeben? Vielen Dank.

+0

Verwenden Sie ein Set. Verwenden Sie insbesondere ein HashSet. Der Codierungsstil wäre nur eine Frage der Auswahl einer geeigneten Datenstruktur für Ihr Problem, das Sie zu lösen versuchen. Im Wesentlichen möchten Sie keine vorhandenen Benutzer zur Sammlung hinzufügen, und ein HashSet verfolgt nur 1 Vorhandensein eines eindeutigen Objekts. –

+0

^Verwenden von 'HashSet' erfordert einen richtigen Hash ... Was ist nicht das, was Sie normalerweise kostenlos haben. – alf

Antwort

2

Sie benötigen nicht die boolean, nur return von der Methode, wenn der Benutzer existiert.

public static void addToUserList(User newUser){ 
    for (User user : users) { 
     if(user.getUserID() == newUser.getUserID()){ 
      System.out.println("DUPLICATED USER ID: " + user.getUserID() + "ALREADY EXISTS"); 
      return; 
     } 
    } 

    users.add(newUser); 
} 
+0

Danke, das funktioniert total. –

0

bitte versuchen Sie es mit this.Change der == in ersten, wenn auf! = Wie unten, und entfernen Sie den letzten Teil

public static void addToUserList(User newUser){ 

    boolean hasFound = false; 

    for (User user : users) { 
     if(user.getUserID() != newUser.getUserID()){ 

      users.add(newUser); 
     } 

    else{ 
      System.out.println("DUPLICATED USER ID: " + user.getUserID() + "ALREADY EXISTS"); 
     } 

    } 


} 
+2

Ich glaube nicht, dass dies funktioniert, fügt diese Schleife neue Benutzer Benutzerliste mehrmals hinzu (bei jedem nicht gleichen Vergleich). –