0

我需要读取存储在文本文件中单行中的数组。到目前为止正在做的是:

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 数组。如何删除这个多余的步骤?

4

2 回答 2

3

如果您可以使用InputStreamandScanner类,您可以执行以下操作:

Scanner scanner = new Scanner(inputStream);
List<Integer> list = new ArrayList<Integer>();
while(scanner.hasNext()) {
    list.add(scanner.nextInt());
}
于 2013-05-03T20:18:45.963 回答
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() 方法的作用非常相似,但它不需要处理正则表达式,因此在这种情况下性能应该会好得多。

于 2013-05-03T20:19:13.307 回答