0
이진 파일에서 해시 맵을 작성하고 싶습니다. 이 바이너리 파일의 구조는 다음과 같습니다. 첫 번째 정수는 해시 맵과 키/값 쌍을 작성하기 위해 스트림에서 읽어야하는 정수의 수를 나타냅니다. 키 2 - 3 - 값 4 - 키 - 5 값 - 6 - 키 7 값DataInputStream 이상한 동작
읽을
1 INT : I 7 개 정수 총했을 세 값을 갖는 해시 맵 이처럼
두 개의 코드가 서로 다른 결과를 갖는 것은 어떻게 가능합니까? 유일한 차이점은 첫 번째 예제에서 보조 변수 을 사용하여을 읽을 바이트 값을 저장한다는 것입니다. 두 번째 예제에서는 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