데이터 파일의 각 행을 배열 목록으로 읽고 해당 목록을 섞은 다음 셔플 링 된 데이터에 대해 몇 가지 추가 작업을 수행하는 Java 코드를 작성 중입니다. 문제는 셔플 후에 배열 목록의 일부 요소에 대해 null 요소를 가져 오는 것입니다. rowData
로 작업 할 때 코드를 실행에Collections.shuffle (List) 다음에 Null 행이 나타나는 이유는 무엇입니까?
//this file contains the data
String input = ...;
//this file contains the number of rows in the data file
String input2 = ...;
FileInputStream fstream2 = new FileInputStream(input2);
DataInputStream in2 = new DataInputStream(fstream2);
BufferedReader brIndex = new BufferedReader(new InputStreamReader(in2));
for(int i = 1; i <= N; i++) {
FileInputStream fstream = new FileInputStream(input+(i+1)+".txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader brData = new BufferedReader(new InputStreamReader(in));
num = Integer.parseInt(brIndex.readLine());
ArrayList<String> temp = new ArrayList<String>();
for(int j = 0; j < num; j++) {
temp.add(brData.readLine());
}
brData.close();
Collections.shuffle(temp);
//read in shuffled data
for(int j = 0; j < num; j++) {
rowData = temp.get(j); ...
}
는,이 후 NullPointerException
를 얻을. 원본 파일의 행은 17,169 개 (모두 null이 아님)입니다. temp.size()
도 17,169이지만 콘솔에 온도 조절기를 인쇄했을 때 temp.get(j)
은 일부는 j
이고 다른 사람은 null이 아닙니다.
아무에게도 이것이 왜 그런 경우이며 어떻게 피할 수 있습니까?
흥미 롭 ... 파일을 열어서 17,169 행의 데이터가 있는지 확인할 수 있습니다. 그러나 내가 제안한대로 13,000 행만 읽습니다 (temp.add (줄) 여야 함). 그래서 나는 왜 셔플 후 약 4,169 개의 널 요소가 흩어지고 있는지 설명합니다. 내가 이해 못하는 것은 ... 다른 4,169 행에 무슨 일이 일어 났는가? – occasionalUser
아 ... 죄송합니다, 방금 실수를 발견했습니다. 나는 잘못된 파일을 읽고 있었다. :) 내가 읽은 파일에는 13000 개의 행이있었습니다. – occasionalUser