有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

c#Java方法“Arrays.deepToString()”是打印2D数组的最有效方法吗?

我发现类似的问题如下:

Java - Best way to print 2D array?

但他们没有回答这样一个问题——效率更高吗

我正在用C#编写一个基本的小型控制台游戏,它需要反复清除和写入控制台以刷新游戏状态。在寻找一种比我当前的尝试更有效的方法时,我在Java中发现了以下内容:

Arrays.deepToString(arrayName);

这正是我想要达到的

  1. 这比在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;
        }
    }
    
  2. 如果效率更高,是否有与之相当的C#库?我似乎在任何地方都找不到一个或甚至有人问起这个问题


共 (1) 个答案

  1. # 1 楼答案

    你从错误的角度看这个问题:

    • 您的代码几乎没有处理任何数据(2019年,10x10是无数据的)
    • 您的代码正在执行控制台输出

    请放心:像这样打印到标准输出比在内存中处理一个几乎什么都没有的数组要贵很多倍(有关一些示例数据,请参见here

    因此,真正的答案是:您可以在这里安全地忽略性能方面

    相反,把时间花在编写易于阅读、理解和维护的代码上。因此,对Arrays.deepToString(arrayName);单个调用比编写同样的自定义循环更受欢迎

    请记住:在java世界中,运行时性能并非来自编写“聪明”的源代码。它来自JIT决定“这段代码被频繁使用,我应该把它翻译成机器代码”。如果JIT认为“不值得优化”,那么它就不值得优化。如果这是值得优化的,那么让JIT更容易实现。通过编写简单易用的代码

    长话短说:实现这个功能是一个很好的练习,但是现在你已经实现了,扔掉它,使用适合你的库调用