1

次のペアをコレクションに追加しようとしています

698xxxxxxx - 人物A

698xxxxxxx - 人物B

699xxxxxxx - 人物A

699xxxxxxx - 人物B

私はたくさんのファイルを調べて、そこにあるペアをコレクションに追加しようとします。二重の PAIRS を使用せずに、各番号とそれが関連付けられた人物を示す表を作成できるようにしたいと考えています。例えば

1人OK

1人OK

2人OK

3人OK

3 人 B は既に存在するため、OK ではありません

マルチマップを使用してみましたが、正しい選択かどうかはわかりません。解決策が何であれ、その値を反復処理してペアを使用できるようにする方法を教えてください。要求の厳しい投稿で申し訳ありませんが、私は Java が初めてで、API を理解するのが少し難しいと感じています。

前もって感謝します

4

4 に答える 4

3

必要なものに応じて、3 つの明白な代替手段があります。

  • 電話番号ごとに 1 人しか存在できない場合は、単純なMap<PhoneNo, Name>.

  • 特定の電話番号を複数の人に関連付けることができる場合は、Map<Phone,Set<Name>>またはマルチマップ クラスのいずれかです。

  • また、電話番号や各人の番号も調べたい場合は、2 つのマップまたは 2 つのマルチマップが必要です... または双方向マップが必要です。

行う必要がある 2 つ目の選択肢があります。ハッシュ テーブルとツリー ベースの組織です。ハッシュ テーブルは、O(1)ルックアップ/挿入/削除を提供します (ハッシュ関数が適切であると仮定します)。ツリーベースの実装ではO(logN)操作が可能ですが、エントリ (または値) をキー順に反復処理することもできます。

標準の Java クラス ライブラリはマルチマップまたは双方向マップを提供しませんが、単純なコレクション クラスを組み合わせることで簡単に実装できます。

于 2013-05-09T11:07:06.707 に答える
1

キーと値のペアを受け入れる Map Interface in Java を選択できます。

これを参考にしてください: http://www.tutorialspoint.com/java/java_map_interface.htm

于 2013-05-09T11:01:14.007 に答える
0

人の名前としてのキーと数値の HashSet としての値を持つハッシュマップが必要になる場合があります。ハッシュセットは重複を許可しないため、重複する数値は格納されません。コードは次のとおりです。

HashMap<String,HashSet> Records;
于 2013-05-09T11:06:48.657 に答える
0

Java には、いくつかのオプションがあります。人や数のカーディナリティがわからない場合は、次の方法を試してください。

public class Pair {
  String person;
  String number;
  }

次に、セットを使用してダブレットから保存します

Set<Pair> pairs = new HashSet<>();
....
pairs.add( new Pair( "689xxxx", "personA" );
for ( Pair pair : pairs ) {
  System.out.println( pair.number + " - " + pair.person );
}

波止

于 2013-05-09T11:08:33.163 に答える