0
我想从一个二进制文件构建一个hashmap。该二进制文件具有以下结构:第一个整数表示为了构建hashmap和键/值对,必须从流中读取的整数数量。DataInputStream奇怪的行为
因此,对于具有三个值我将具有总共7个整数的散列映射:
1 INT读 - 2键 - 3值 - 4键 - 值5 - 6键 - 7值
下面的两个代码有两种不同的结果怎么可能?唯一的区别是在第一个示例中,我使用辅助变量a来存储要读取的字节值。在第二个中,我直接在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