为什么 bufferedReader 在 java 中比 Scanner class 更高效?
Why bufferedReader is much efficient than Scanner class in java?
看看下面的问题,无论您为此编写解决方案的效率如何,使用 Scanner class 都会导致超时。
问题:
你给了一个包含元素的数组。现在,对于给定的查询,您提供了一个整数,您必须找到最小和,即数组中所有元素的总和,其值小于提供给查询的给定整数。
输入格式:
第一行:一个整数,表示数组元素的数量。
第二行:space 分隔的整数,表示数组元素。
第三行:一个整数,表示查询的数量。
对于每个查询:新行包含一个整数
输出格式:
对于每个查询,在新行中打印一个整数,即 Min Sum。
只需使用 Buffered Reader
而不是 Scanner class
和 Buffered Writer
而不是 System.out.print
,就可以使这段代码的速度提高一倍,并且所有测试用例都可以轻松通过,什么是这背后的原因是什么?
BufferedReader 比 Scanner 快得多,因为它具有比 Scanner 更大的缓冲内存。可以看出两者的区别in this discussion.
看看下面的问题,无论您为此编写解决方案的效率如何,使用 Scanner class 都会导致超时。
问题:
你给了一个包含元素的数组。现在,对于给定的查询,您提供了一个整数,您必须找到最小和,即数组中所有元素的总和,其值小于提供给查询的给定整数。
输入格式:
第一行:一个整数,表示数组元素的数量。 第二行:space 分隔的整数,表示数组元素。 第三行:一个整数,表示查询的数量。 对于每个查询:新行包含一个整数
输出格式: 对于每个查询,在新行中打印一个整数,即 Min Sum。
只需使用 Buffered Reader
而不是 Scanner class
和 Buffered Writer
而不是 System.out.print
,就可以使这段代码的速度提高一倍,并且所有测试用例都可以轻松通过,什么是这背后的原因是什么?
BufferedReader 比 Scanner 快得多,因为它具有比 Scanner 更大的缓冲内存。可以看出两者的区别in this discussion.