当前位置: 首页 > 面试题库 >

如何加快Java中字符串操作的循环?[关闭]

辛成周
2023-03-14
问题内容

我有一个程序在循环中生成字符串,但是我的程序太慢了。现在大约要运行600毫秒Oblig1Test.oppgave7。可以采取什么措施来加快速度?

Oblig1.toString

public static String toString(int[] a, char v, char h, String mellomrom)
{
    String s ="";

    s += v;

    if(a.length != 0)
    {
        for(int i = 0; i < a.length-1; i++)
        {
                s += a[i] + mellomrom; 
        }

        s += a[a.length-1];
    }

    s += h;

    return s;
}

Oblig1Test:

public static int oppgave7()
{
   int[] b = new int[20000];
   long tid = System.currentTimeMillis();
   Oblig1.toString(b,' ',' '," ");
   tid = System.currentTimeMillis() - tid;

  if (tid > 40)
  {
    System.out.println("Oppgave 7: Metoden "
      + "er for ineffektiv. Må forbedres!");
  }
}

public static void main(String[] args) throws IOException
{
   oppgave7();
}

问题答案:

当代码中的慢速操作是许多字符串的串联时,使用StringBuilder可能会带来很多好处。

通过将您的toString方法更改为

public static String toString(int[] a, char v, char h, String mellomrom){
    StringBuilder sb = new StringBuilder();
    sb.append(v);
    if(a.length != 0){
        for(int i = 0; i < a.length-1; i++){
                sb.append(a[i]).append(mellomrom); 
        }
        sb.append(a[a.length-1]);
    }
    sb.append(h);
    return sb.toString();
}

我在计算机上能够从493毫秒传递到22毫秒。



 类似资料:
  • append key value 返回新字符串值的长度。

  • 对于以下字符串,大小输出不正确。为什么会这样?我该如何解决? 我试着逐字符遍历str,这样我就可以把它读入向量

  • 在映射上分配一些默认值 我知道我需要在地图中添加值 问题是我的循环不起作用。我需要从地图中添加value2,基于从那里的位置或从地图中添加value2

  • 我正在解构一个Java对象,从getter中获取所有必需的String值,并将所有这些值连接到每个对象的一个String中。然后我想存储每个字符串是 我将字符串连接到每个对象的一个字符串中,这样我就可以将其打印到pdf文档(pdfbox)中以生成报告。。。我想将每一行的格式设置为与表中的相同。E、 g不管String1是3个字符还是103个字符长,它都将始终填充25个字符的空间——要么子字符串变小

  • 我正在尝试创建一个自动打开我的在线类的脚本。我写了这样的代码: 现在,问题是第一个if语句被无休止地执行,我想让它只执行一次,而不是等到现在==lesson2再执行第二个if etc

  • 问题内容: 有没有人知道我可以用来操纵查询字符串的java类? 本质上,我想要一个可以简单地给查询字符串提供一个类,然后删除,添加和修改查询字符串KVP的类。 提前致谢。 编辑 为了回应对此问题的评论,查询字符串将如下所示; 所以我想向这个类传递查询字符串,并说类似的东西; 然后也许 有可能 或类似的东西。 问题答案: 像这样 要简单地迭代地图: