私は日々C++の開発者であり、const戻り型の規約に慣れています。私はjavaにこれに類似した施設がないことを認識しています。Javaセーフ返却型コンテナ
私は特定の状況があり、私の仕事にとって最も不変なコレクションが不思議でした。 C++ではstd :: vectorを使用します。
私は現在浮動小数点[]データを持つWavFileクラスを持っていますが、これを不変である可能性のあるものに置き換えたいと思います。
コンテナに関するいくつかの重要な規定は、作成時にそのサイズが分かっており、動的に拡大または縮小する必要がないことです。次に、コンテナにインデックスを付けるには、O(1)にする必要があります。
さらに重要なのは、トピックのように、私はこのコンテナの不変バージョンを返すゲッターを持たせたいと思っています。
私が探している容器のタイプは?これはjavaで可能なことですか?
'float []'配列。 Javaジェネリックスをベースにしたコレクションは、ストレージの量、および参照の局所性に関するさらに大きなオーバーヘッドの点でオーバーヘッドが大きくなります。要件を満たす独自のコンテナを作成します。ゲッターは発信者のためにあなたの配列の守備的なコピーを作るべきです。 – dasblinkenlight
私は設計によって内部データを公開しないようにするより良い方法だと思います。内部データを公開するのではなく、単に各フロートを繰り返し処理するだけの目的なら、 'DoubleStream getDataStream()'または 'void forEachDataPoint(DoubleConsumer consumer)'を公開するのはなぜでしょうか?人々が何らかのランダムアクセスを行うことを期待している場合は、 'float dataPoint(int index);のようなものを公開することもできます。 float [] dataPoints(int from、int to); –