我正在尝试打印一个包含数千个条目的 ArrayList(它必须找到 1 到 1000000 之间的所有素数)。在程序结束时,我调用了这个方法:
println(myArrayList);
虽然这仅适用于几百个条目,但一旦有更多条目,打印数组列表要比查找素数花费更多的时间。
迭代它会更有效吗?或者使用不同的类?
我正在尝试打印一个包含数千个条目的 ArrayList(它必须找到 1 到 1000000 之间的所有素数)。在程序结束时,我调用了这个方法:
println(myArrayList);
虽然这仅适用于几百个条目,但一旦有更多条目,打印数组列表要比查找素数花费更多的时间。
迭代它会更有效吗?或者使用不同的类?
迭代它可能会更有效。 println
只会做 a toString()
,这会产生很多串联垃圾,您可以通过直接打印而不是先在内存中String
构建整个垃圾来避免这些垃圾。String
我相信 StringBuffer 是一种更高效、更快捷的打印方式。只需在循环中构建一个并在最后打印它。
您要打印到控制台吗?如果是,控制台操作比任何其他输出操作(文件、套接字等)都要慢得多。打印的行越多,这种速度差异就越明显。
如果您需要打印到控制台,那么“加速”您无能为力,但打印到文件会快得多。更改您的程序,使其打印到文件中,您会发现速度有所提高。