0

ツリー マップを使用してシステムにデータを追加しました。システムに追加されたオブジェクト内の特定の値をユーザーが変更できるようにしたいと考えています。ユーザーが変更したい値を選択できるように、これを使用して画面に出力しました。

for(Employee employee : employeeMap.values())
{
    System.out.println("Employe no :" +x+": "+employee);
    x++;
}

次に、ユーザーが選択したツリーマップのオブジェクト要素にアクセスするために、これを使用してみました:

 System.out.println("this employee @@@@@##### is no: "+employeeMap.get(x));

これは私がarraylistsでうまく使用したものですが、このアプローチを使用するとすべての値がnullになるようです。

誰かがそれを行うためのより良い方法を教えてください。

4

3 に答える 3

2

Map のエントリにアクセスするときは、ArrayList のようにインデックスではなく、キーを使用する必要があります。そのキーが存在しない場合は、表示されているように null が返されます。あなたの例の場合、ループ内のemployeeオブジェクトに既にアクセスしているため、マップから再度アクセスするfor必要はありません。get

employeeMap.entrySet()キーと値の両方を一度に反復処理するために代わりにusing を使用することを検討したい場合があります。次にemployeeEntry.getKey()、このように、特定のエントリのキーが何であるかを確認するようなことを言うことができます (わからないため、ジェネリックは省略します)。キーのタイプ、およびキーが従業員番号であると仮定します):

for(Map.EntrySet employeeEntry : employeeMap.entrySet()) {
    System.out.println("Employee no :" + employeeEntry.getKey() +": " + employeeEntry.getValue());
}
于 2011-10-19T05:20:27.720 に答える
0

マップはキーと値のペアです。インデックスを使用してマップから値にアクセスすることはできません(xを使用してループx ++でインクリメントする場合など)。データの挿入中に入力したキーuを使用する必要があります。私はあなたに次の方法を提案します。

for(String key:employeeMap.keySet())
{
    System.out.println("Employe no :" +x+": "+employee.get(key));
    x++;
}
于 2011-10-19T05:30:58.087 に答える
0

基本的に、キーでマップ値にアクセスします

スニペットの employeeMap.get(x), 'x' はキーのようには見えません。employeeMap にデータを入力する方法を教えてください

更新しました

従業員IDをキーとして使用しているため、それを使用して値を取得できます

for (Employee employee : employeeMap.values()) {
    System.out.println("Employe no :" +employee.getRandomIDno()+": "+employee);
    Object thekey = employee.getRandomIDno();
}

以降、

System.out.println("this employee @@@@@##### is no: "+employeeMap.get(thekey));    
于 2011-10-19T05:20:25.207 に答える