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();