2016-05-03 41 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); 
    } 


} 

如何重構此代碼?在用戶arraylist中,不應該有按ID的重複用戶。重構添加過程

我認爲使用布爾變量有點不必要,但我找不到更好的解決方案。 P.Ss:另外如果有這樣的編碼風格的傳統,你能提供一個名字嗎?謝謝。

+0

使用一組。特別是使用HashSet。編碼風格只是在您嘗試解決您的問題時選擇合適的數據結構。本質上,你不想將現有用戶添加到集合中,並且HashSet跟蹤唯一對象的唯一存在。 –

+0

^使用'HashSet'需要一個正確的哈希......這通常不是免費的。 – alf

回答

2

如果用戶存在,則不需要boolean,只需要return

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

謝謝,這完全有效。 –

0

請儘量在第一,如果以this.Change的==!=像下面並刪除最後一部分

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

我不認爲這個工作,這個循環多次向用戶列表中添加newUser(在每個不相等的比較)。 –