バイナリファイルからハッシュマップを構築したいと思います。このバイナリファイルには、次の構造があります。最初の整数は、ハッシュマップとそれに続くキーと値のペアを作成するためにストリームから読み取る必要がある整数の数を示します。 - キー2 - 3値 - 4キー - 5値 - キー6 - 7値DataInputStreamの異常な動作
読み取るため
1 INT:私は7つの整数の合計を有するであろう三つの値を持つハッシュマップのためのだから
2つのコードが2つの異なる結果をもたらす可能性はありますか?唯一の違いは、最初の例では、補助変数を使用して、読み取るバイトの値を格納することです。 2番目の方法では、私はちょうどそれをforループで直接使用します。
static Int2IntMap fetchHashMap(Int2IntMap map, DataInputStream DIS) throws IOException {
int a = DIS.readInt();
for (int i = 0; i < a; i++) {
map.put(DIS.readInt(),DIS.readInt());
}
return map;
}
これは、補助変数のないコードです:
static Int2IntMap fetchHashMap(Int2IntMap map, DataInputStream DIS) throws IOException {
for (int i = 0; i < DIS.readInt(); i++) {
map.put(DIS.readInt(),DIS.readInt());
}
return map;
}
旧作品後者よりも良いが、それはまだ私が期待される構造と矛盾しています。
関連性はありますが、私の実装ではマルチスレッドが使用されていますが、各スレッドには独自のDataInputStreamがあります。
それぞれのスレッドが独自の 'DataInputStream'を持つスレッディングについては、それ自身のファイルから読み込んだスレッドもそれぞれそうですか? – Kayaman
はい、各スレッドには独自のファイルがあります – Aalto