在Java中输入数组的最有效方法是什么?

时间:2013-05-03 20:11:43

标签: java arrays performance input inputstream

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

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数组。如何删除此冗余步骤?

2 个答案:

答案 0 :(得分:3)

如果您可以使用InputStreamScanner课程,则可以执行以下操作:

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()方法的作用非常相似,但它不需要处理正则表达式,因此在这种情况下性能应该更好。