2016-05-03 10 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

をする場合のように、以下に=!this.Changeで最初に==を試してみて、最後の部分を削除してください。特に、HashSetを使用します。コーディングスタイルは、あなたが解決しようとしている問題を考えれば、適切なデータ構造を選択するだけです。基本的には、既存のユーザーをコレクションに追加する必要はなく、HashSetは一意のオブジェクトが1つしか存在しないことを追跡します。 –

+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

セットを使用

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をユーザーリストに数回(非等価の比較ごとに)数回追加する。 –