2017-03-31 4 views
0

ユーザ名のリストを作成しておき、各ユーザ名がパスワードに関連付けられているとします。目的は、ユーザー名が送信されたとき、私は一致するものを探すためにユーザー名リストを繰り返します。一致したら、私はそのユーザー名のパスワードを尋ねるでしょう。私はStringの2D ArrayListを使うことを考えましたが、ユーザ名を尋ねてパスワードをそのようにチェックすることはできないと考えています。これを行うための唯一の可能な方法は、2つの別々のArrayListを作成することですか?もしそうなら、どのように私はusernameリストから各名前のために、正しいパスワードがパスワードリストに1つだけあることを確認しますか?Javaでの2D ArrayListの適用

注:私は最近、Javaに導入されました。

+1

あなたが定義することを 'User'の一覧については何'.username'と' .password'のプロパティを持っていますか? –

+0

私はそれらについてはありません。私はまだかなりJavaに新しいです。私は過去に主にC++を使用しています。それについてもっと教えていただけますか? –

+1

これに代えて、 'HashMap 'はユーザー名がキーで、ユーザーのパスワードは値です。 – AJNeufeld

答えて

0

java.utilからのマップは、あなたがより良い探しているものを、あなたはこのようなものを行うことができるだろうだろう:

Map<String, String> namesToPasswords = new HashMap<>(); 
namesToPasswords.put("user1", "password"); 

その後namesToPasswords.get("user1")はあなたがしてください何ができる"password"を返します。

これは、相互参照配列よりも考えるのがずっと簡単であるだけでなく、ずっと高速です。 HashMapのエントリを検索するのがO(1)である間に、長さnの配列を反復して一致するものをO(n)とします。

Documentation

+0

ユーザーを検索して一致を見つけるにはどうすればよいですか? –

+0

'Map'の' get() 'メソッドだけを使う必要はありません。そのユーザーがマップ内にある場合は、パスワードが返されます。 – Kirill

+0

私はあなたを理解しているか分からない。ユーザーに最初にユーザー名を送信してもらいたい。ユーザー名がリスト(またはマップ)の内側にあることがわかったら、パスワードを尋ねます。だからあなたの方法を使うなら、どうすればいいのですか? –

0

偶然あなたは、2DのArrayListを使用したくない場合、これはあなたがそれを行うことができます一つの方法です:

List<List<String>> users = new ArrayList<>(); 

// Fill the 2D List 
users.add(new ArrayList<>()); users.get(0).add("Joe Blow"); users.get(0).add("password1"); 
users.add(new ArrayList<>()); users.get(1).add("John Doe"); users.get(1).add("password2"); 
users.add(new ArrayList<>()); users.get(2).add("Freddy Flint"); users.get(2).add("password3"); 
users.add(new ArrayList<>()); users.get(3).add("Tracey Johnson"); users.get(3).add("password4"); 
users.add(new ArrayList<>()); users.get(4).add("Mike Tyson"); users.get(4).add("I bit off his ear? :D"); 

// Provide a name that might be in the list 
// User Name is case sensative. 
String suppliedUserName = "Mike Tyson"; 

// Iterate throught the list of User Names & Passwords... 
String successMsg = "Can't Find User Named: " + suppliedUserName; 
String password; 
for (int i = 0; i < users.size(); i++) { 
    if (users.get(i).get(0).equals(suppliedUserName)) { 
     password = users.get(i).get(1); 
     successMsg = "Hey..." + suppliedUserName + "'s Secret Password is: " + password; 
     break; //found it so stop the iteration 
    } 
} 

// Display a Success or Fail message. 
System.out.println(successMsg); 
関連する問題