gpt4 book ai didi

java - BufferReader的高效实现

转载 作者:行者123 更新时间:2023-12-01 13:10:23 26 4
gpt4 key购买 nike

我正在尝试解决this Java 中的问题,但它给了我一个错误。原因是我无法实现运行时每秒处理 2.5MB 的输入数据。我想知道有什么方法可以加快我的代码速度吗?

public class Main {

final static int size = 5000;
static int[] result = new int[size];

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int k = input.nextInt();
int divided = 0;

BufferedReader bi = new BufferedReader(new InputStreamReader(System.in));

try {
while (n-- > 0) {

result[n] = Integer.parseInt(bi.readLine());
if (result[n] % k == 0)
divided++;
}
} catch (IOException e) {
e.printStackTrace();
}

System.out.println(divided);

input.close();
}

}

最佳答案

result 数组有什么用途?您只需对其进行索引以存储刚刚解析的数字,然后立即再次检查其整除性。去掉数组,让循环变得简单:

while(n-- > 0)
if (Integer.parseInt(bi.readLine()) % k == 0)
divided++;

<小时/>您可能希望在没有 BufferedReader 的情况下比较其性能,因为缓冲实际上可能是减慢速度的原因。<小时/>就我个人而言,我会使用 Java 8 Streams API 来执行此操作,因为很容易使其成为并行操作。像这样的事情:

Scanner input = new Scanner(System.in);
final int n = input.nextInt(), k = input.nextInt();

InputStreamReader in = new InputStreamReader(System.in);

System.out.println(
IntStream.generate(()->Integer.parseInt(in.readLine()))
.limit(n)
.parallel()
.filter(a->a%k==0)
.count());

关于java - BufferReader的高效实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22916636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com