Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更有效地避免两个for循环,并将它们合并为一个for循环?_Java_For Loop - Fatal编程技术网

Java 如何更有效地避免两个for循环,并将它们合并为一个for循环?

Java 如何更有效地避免两个for循环,并将它们合并为一个for循环?,java,for-loop,Java,For Loop,基本上,我得到了这个: 路径是一个字符串数组 String writer = ""; for (int i = 0; i < path.length; i++) { writer += path[i] + "{"; } writer += string; for (int i = 0; i < path.length; i++) { writer += "}"; } 但这看起来既丑陋又低效。有没有办法将

基本上,我得到了这个:

路径是一个字符串数组

    String writer = "";
    for (int i = 0; i < path.length; i++) {
        writer += path[i] + "{";
    }
    writer += string;
    for (int i = 0; i < path.length; i++) {
        writer += "}";
    }

但这看起来既丑陋又低效。有没有办法将其正确地组合成一个for循环?

如果没有智能方法,以下方法速度更快:

StringBuilder sb = new StringBuilder();
for (String p : path) { // Might cost a bit of speed.
    sb.append(p).append('{');
}
sb.append(string);
for (int i = 0; i < path.length; ++i) {
    sb.append('}');
}
String writer = sb.toString();

这是一个没有for循环的解决方案,使用StringBuilder而不是+=-结构,这可能会导致内存和性能问题

StringBuilder firstPart = new StringBuilder();
StringBuilder lastPart = new StringBuilder();

Arrays.stream(path)
    .forEach(elem -> {
        firstPart.append(elem);
        firstPart.append("{");
        lastPart.append("}");
    });

firstPart.append(string);
firstPart.append(lastPart.toString());
String writer = firstPart.toString();

你想用这个做什么?它是代码块生成器吗?解释循环的用途,否则我们帮不了你。这里效率低下的不是两个循环。这是字符串连接。使用StringBuilder。使用foreach循环也会让它不那么难看。如果你让我们知道你到底想实现什么,这会有所帮助。。。没有确切的方法使用两个for循环;这完全取决于你想做什么。不过仍然有两个循环
StringBuilder firstPart = new StringBuilder();
StringBuilder lastPart = new StringBuilder();

Arrays.stream(path)
    .forEach(elem -> {
        firstPart.append(elem);
        firstPart.append("{");
        lastPart.append("}");
    });

firstPart.append(string);
firstPart.append(lastPart.toString());
String writer = firstPart.toString();