0

キーバリュー方式で情報を保存する必要があります。しかし、組み込みのMapインターフェースは私の要件に適合しません。Java Mapでは、キーと値の両方を参照する必要がありますが、プリミティブ値をキーとして使用する必要があります。

マップのようなデータ構造はありますか?ご協力いただきありがとうございます!

要件の詳細:

Javaで記述された私のサーバーは、tcpポートをリッスンするデーモンとして実行されます。ユーザーが最初に接続するときは、ユーザーに関する詳細をKV方式で保存する必要があり、2回目に接続するときは、ユーザーの詳細をKVデータ構造から読み取ることができる必要があります。

ユーザーオブジェクトをキーとして使用できません。切断すると破棄され、2番目の接続で再構築されるためです。2つのオブジェクトは同じ参照ではありません。同じ理由で、整数キーも私の要件に適合しません。

つまり、参照ではなく、値をキーとして使用する必要があります。

考慮できるキーは、UUID(long)、id(int)などです。それらはすべてプリミティブ型です。

4

6 に答える 6

1

プリミティブ型を対応する非プリミティブ クラスに単純にラップして、それを通常の Java マップのキーとして使用できない理由がわかりません。

Map<Integer, Object> map = new HashMap<Integer, Object>();
Integer key = Integer.valueOf(5);
Object test = new Object();
map.put(key, test);
Object test2 = map.get(Integer.valueOf(5));

test.equals(test2); // will be true
于 2012-11-22T10:41:56.467 に答える
0

さまざまな実装が他の場所に存在しますが、標準の Java ライブラリには存在しません。たとえば、LongHashMapを参照してください。

于 2012-11-22T10:49:17.963 に答える