Java 在一个字符串中获取字符串数组的所有值

Java 在一个字符串中获取字符串数组的所有值,java,arrays,string,Java,Arrays,String,如果我有 String[] s = new String[3]; s[0] = "Ap"; s[1] = "p"; s[2] = "le"; String result = ? 如果我想让苹果在没有循环的情况下脱离s,我该怎么做 有什么捷径吗?如果您知道阵列的长度,可以轻松执行以下操作: String result = s[0] + s[1] +s[2]; 另一种选择是执行以下操作(这纯粹是学术性的,我不会在实际场景中使用它,因为它会从字符串中删除[,]和): 还有一个选项,与第一次尝试一

如果我有

String[] s = new String[3];
s[0] = "Ap";
s[1] = "p";
s[2] = "le";

String result = ?
如果我想让苹果在没有循环的情况下脱离s,我该怎么做


有什么捷径吗?

如果您知道阵列的长度,可以轻松执行以下操作:

String result = s[0] + s[1] +s[2];
另一种选择是执行以下操作(这纯粹是学术性的,我不会在实际场景中使用它,因为它会从字符串中删除
[
]
):

还有一个选项,与第一次尝试一起使用,但使用类似C的格式化程序:

System.out.println(String.format("%s%s%s", s));

如果您有未知数量的条目,我认为您需要一个循环。

如果不循环对您来说比阻止导入另一个库更重要,或者如果您已经在使用,无论如何,您可以使用StringUtils.join方法

import org.apache.commons.lang.StringUtils;
String joined = StringUtils.join(s, "");

也许apachecommons还有其他对您的项目感兴趣的方法。我发现它们对于本机Java库中缺少的功能非常有用。

Java没有
String.join()
type方法。如果要隐藏循环,您必须自己滚动一次。

如果不循环,您可以:

public String joinpart(String[] a, int i, String prefix) {
    if (i < a.length) {
        return joinpart(a, i + 1, prefix + a[i]);
    }
    return prefix;
}
这被称为递归解决方案。

使用的方法很简单,只需键入:

String[] array = new String[] { "Ap", "p", "le" };
String result = $(array).join(); // result now is "Apple"

我想他只是举了个例子。如果数组被传递到一个方法中会怎么样?数组知道它有多大(无论如何,在Java中),然后你就可以循环了。否则,运气不好。如果长度是100?你需要一个循环。这不只是在它的实现中循环吗?显然在某个地方会有一个循环!是的,它确实在源代码中签出它。但我主要只想强调使用图书馆的想法。如果这是您将使用的唯一函数,那么导入整个jar当然没有意义。我还检查了源代码,发现它使用了StringBuffer。使用StringBuilder将使其更快。但这是一个很好的答案。它指出“如果您需要某些东西,请检查java库,如果它不在其中,则它必须在apache commons中”:)结果字符串的大小也是二次的。您应该在
joinpart
中使用
StringBuilder
来构造字符串。我认为这对于这个特定的学习练习并不重要,所以我不想使实现复杂化。这会掩盖解决方案的本质,这在这里很重要。好的解决方案。使用字符串生成器怎么样?我们可以指定容量并在for循环中追加,而不是使用递归。我这样问是因为我认为对于更大尺寸的阵列来说速度更快。我错了吗?@jcasso:这个问题要求一个“没有循环”的解决方案。我在上面的评论中提到了StringBuilder的使用,但问题是关于Java,而不是Javascript。
public String joinpart(String[] a, int i, String prefix) {
    if (i < a.length) {
        return joinpart(a, i + 1, prefix + a[i]);
    }
    return prefix;
}
String[] a = new String[]{"Ap", "p", "le"};
String apple = joinpart(a, 0, "");
String[] array = new String[] { "Ap", "p", "le" };
String result = $(array).join(); // result now is "Apple"