为了账号安全,请及时绑定邮箱和手机立即绑定

Java 方法“Arrays.deepToString()”是打印二维数组最有效的方法吗?

Java 方法“Arrays.deepToString()”是打印二维数组最有效的方法吗?

POPMUISE 2022-07-14 17:24:32
我发现了类似的问题:Java - 打印二维数组的最佳方式?但他们没有回答这个问题——它更有效吗?我正在用 C# 编写一个基本的小型控制台游戏,它需要反复清除和写入控制台以刷新游戏状态。在寻找比我当前尝试更有效的方法时,使用嵌套的 for 循环遍历数组并以这种方式打印,我在 Java 中找到了这个:Arrays.deepToString(arrayName);这就是我想要实现的目标。这比在 Java 中使用嵌套循环更有效吗?String[][] map = new String[10][10];for (int i = 0; i < 10; i++){    for (int j = 0; j < 10; j++)    {        map[i][j] = "=";    }}boolean firstRun = true;for (int i = 0; i < 10; i++){    for (int j = 0; j < 10; j++)    {        if (j == 0 && firstRun == false)        {            System.out.print("\n");        }        System.out.print(map[i][j]);        firstRun = false;    }}如果效率更高,是否有等效的 C# 库?我似乎无法在任何地方找到一个甚至有人问这个问题。
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

你从错误的角度看这个:

  • 您的代码几乎没有处理任何数据(10x10在 2019 年什么都不是)

  • 您的代码正在执行控制台输出

请放心:像这样打印到 stdout比在内存中处理几乎没有的数组要贵很多倍(有关一些示例数据,请参见此处)。

因此,真正的答案是:您可以放心地忽略这里的性能方面。

而是将时间花在编写易于阅读、理解和维护的代码上。从那里开始,与编写相同的自定义循环相比,单次调用更可取。Arrays.deepToString(arrayName);

请记住:在 Java 世界中,运行时性能并非来自编写“聪明”的源代码。它来自于 JIT 决定“此代码经常使用,我应该将其翻译成机器代码”。如果 JIT 认为“不值得优化”,那么它就不值得优化。如果值得优化,那么让JIT变得容易。通过编写简单易行的代码。

长话短说:实现该功能是一个很好的练习,但既然你已经实现了,就把它扔掉并使用适合你的库调用。


查看完整回答
反对 回复 2022-07-14
  • 1 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号