キャッシュの代わりにコレクションを使用する場合、ResultSet の代わりにCachedRowSetを使用することをお勧めします。CachedRowSet は ResultSet のサブインターフェースですが、データは既にキャッシュされています。これは、すべてのデータを ArrayList に書き込むよりもはるかに簡単です。
CachedRowSets 自体も照会できます。
CachedRowSet rs;
.......................
.......................
Integer id;
String name;
while (rs.next())
{
if (rs.getInt("id") == 13)
{
id = rs.getInt("id");
name = rs.getString("name"));
}
}
したがって、情報が必要なときはいつでも CachedRowSet を呼び出すだけです。食パンとほぼ同じです。:)
編集:
Update メソッドはありますが、ResultSet には set メソッドはありません。ResultSet を再構築する目的で Update メソッドを使用する際の問題は、更新する行を選択する必要があることです。ResultSet が解放されると、すべての行が null に設定されます。null 参照を呼び出すことはできません。リストのリストは ResultSet 自体を模倣します。より正確には、配列の配列は ResultSet を模倣します。
ベクトルはスレッド セーフですが、大きなオーバーヘッドが伴います。代わりに ArrayList を使用してください。ネストされた各リストが作成され、外側のネストされたリストに配置されると、この方法で挿入されます。
nest.add(Collections.unmodifiableList(nested));
ネストされたリストがすべて挿入されたら、ネストされたリストを umodifiableList として返します。これにより、ベクトルのオーバーヘッドなしでスレッドセーフなコレクションが得られます。