我需要读取存储在文本文件中的单行中的数组。 到现在为止做的是:
BufferedReader in = /*hook it to the file input stream via an InputStreamReader */
String[] input = in.readLine().split(" ");
for (int i = 0; i < input.length; i++)
array[i] = Integer.parseInt(input[i]);
这里,我不必要地使用String数组。如何删除此冗余步骤?
答案 0 :(得分:3)
如果您可以使用InputStream
和Scanner
课程,则可以执行以下操作:
Scanner scanner = new Scanner(inputStream);
List<Integer> list = new ArrayList<Integer>();
while(scanner.hasNext()) {
list.add(scanner.nextInt());
}
答案 1 :(得分:0)
BufferedReader in = /*hook it to the file input stream via an InputStreamReader */
String input = in.readLine();
StringBuilder sb = new StringBuilder();
List<Integer> list = new LinkedList<>(); //yours array equivalent
for (int i = 0; i < input.length; i++) {
char ch = input.charAt(i);
if (ch == ' ') {
list.add(Integer.parseInt(sb.toString()));
sb.clear();
} else {
sb.append(ch);
}
}
这样您就不需要创建冗余阵列了。我认为它与split()方法的作用非常相似,但它不需要处理正则表达式,因此在这种情况下性能应该更好。