0

したがって、問題はコードの最適化に関するものです。以下にリストする退職日の表があります

 Year of Birth                              Full Retirement Age
 1937 or earlier.............................65
 1938........................................65 years 2 months
 1939........................................65-4
 1934.......................................65-6
 .
 .
 .and the list is a long list

私がしたいのは、このテーブルを in list オブジェクトなどに保存して、生年月日をメソッドと list オブジェクトに渡して、対応する退職年齢を取得できるようにすることです。リストが非常に大きく、コードが混乱するため、コードに多数の If ステートメントと Else ステートメントを含めたくありません。

この問題の可能な解決策は何ですか? 前もって感謝します

4

6 に答える 6

1

リストの代わりにマップを使用してみてください。マップから関連する値を直接取得できるように、誕生年をキーとして使用します。

于 2013-05-02T15:52:35.087 に答える
0

毎年のデータがある場合は、Java マップ http://docs.oracle.com/javase/tutorial/collections/interfaces/map.htmlを使用します。キーは年、値は退職金です。
これにより、O(1)が得られます

まばらなデータがあり、どういうわけか最も近い年を計算する必要がある場合は、ソートされたリストを使用して、O(logn) を提供するバイナリ検索を使用するか、B ツリーを使用することもできます。

BR、デビッド

于 2013-05-02T15:57:45.203 に答える
0

リスト/テーブルを HashMap に保存してから、メソッドから次のように取得します。

public String getRetirementAge(String yearOfBirth) {
    return yourMap.get(yearOfBirth);

}
于 2013-05-02T15:56:15.613 に答える
0

マップを使用できますが、キーが重複する可能性があります。

2 人が同じ年に生まれることができます。

使用するMultiMap

重複するキーと値のペアを保持でき、特定のキーの値の挿入順序を維持するマルチマップ。すべてのマルチマップに共通の情報については、マルチマップのドキュメントを参照してください。

于 2013-05-02T15:52:51.870 に答える
0

地図を使用します。Map は、 を持つ List オブジェクトKey:Valueです。

Map<String, Object> map = new HashMap<String, Object>();
map.put('1937', 65);
...

マップを通過するには、これを使用できます。

for (String key : map.keySet()) {
    System.out.println(map.get(key));
}

必要に応じて値を変更でき<String, Object>ます (整数、日付など)。いつも同じ順番で<KeyType, ValueType>

于 2013-05-02T15:55:10.377 に答える