collections
基礎となるJavaマップのキーへの参照をエクスポートする必要があることに気づきました。実際のキー オブジェクトへの参照を提供したくはありませんが、それらのコピーを提供して、誰も値をいじったり、マップを台無しにしたりしないようにします。したがって、任意のジェネリック型のコピーを作成する必要があります。
Collections.nCopies
私はすでにこれを実行するユーティリティクラスをメモリ内シリアル化で作成しましたが、それが物事のコピーも提供することに気付きました。
したがって、私が何をしているのかを理解するために、たとえば、他のキー値を指定して次の (より高い/より低い) キー値にアクセスする必要があります。
public class MapWrapper<T, K extends Comparable<K>>
implements OtherThing<T, K>
{
public K next (K current) {
return ... cloned next highest key as per NavigableMap.higherKey()
}
}
したがって、問題は、オブジェクトをコピーする方が良いかどうかです
T copy = Collections.nCopies(1,item).get(0)
または、オブジェクトをシリアライズしてからデシリアライズする
final ByteArrayOutputStream outputBuffer = new ByteArrayOutputStream();
final ObjectOutputStream outputStream = new ObjectOutputStream(outputBuffer);
outputStream.writeObject(item);
outputStream.close();
final ByteArrayInputStream inputBuffer = new ByteArrayInputStream(buffer);
final ObjectInputStream inputStream = new ObjectInputStream(inputBuffer);T copy = null;
T item = null;
try {
copy = (T)inputStream.readObject();
} catch (ClassNotFoundException e) {
Logger.getLogger(SerialisationService.class.getName()).log(Level.WARNING, null, e);
}
inputStream.close();
inputBuffer.close();
outputBuffer.close();
a をコピーして簡単にテストするとLong
、 のCollections.nCopies
方が高速です (0 ms / 8 ms)。しかし、この遅い時間に私が考えることができないその方法に対するいくつかの警告はありますか、それともキーのコピーを取得するためのより良い方法を考えてもらえますか?