Java:使用分隔符连接基元数组

新手上路,请多包涵

假设,我有一个数组:

 int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};

我需要使用分隔符连接它的元素,例如 " - " ,结果我应该得到这样的字符串:

 "1 - 2 - 3 - 4 - 5 - 6 - 7"

我怎么能这样做?

PS: 是的,我知道 这个这个 帖子,但它的解决方案不适用于基元数组。

原文由 spirit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 290
2 个回答

这是我想出的。有几种方法可以做到这一点,它们取决于您使用的工具。


使用来自 Common LangStringUtilsArrayUtils

 int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = StringUtils.join(ArrayUtils.toObject(arr), " - ");

您不能只使用 StringUtils.join(arr, " - "); 因为 StringUtils 没有该方法的重载版本。虽然,它有方法 StringUtils.join(int[], char)

适用于任何 Java 版本,从 1.2 开始。


使用 Java 8 流:

是这样的:

 int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = Arrays.stream(arr)
        .mapToObj(String::valueOf)
        .collect(Collectors.joining(" - "));

事实上,有很多变体可以使用流来实现结果。

Java 8 的方法 String.join() 仅适用于字符串,因此要使用它,您仍然必须将 int[] 转换为 String[]

 String[] sarr = Arrays.stream(arr).mapToObj(String::valueOf).toArray(String[]::new);
String result = String.join(" - ", sarr);


如果您坚持使用没有库的 Java 7 或更早版本,您可以编写自己的实用程序方法:

 public static String myJoin(int[] arr, String separator) {
    if (null == arr || 0 == arr.length) return "";

    StringBuilder sb = new StringBuilder(256);
    sb.append(arr[0]);

    //if (arr.length == 1) return sb.toString();

    for (int i = 1; i < arr.length; i++) sb.append(separator).append(arr[i]);

    return sb.toString();
}

比你能做的:

 int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = myJoin(arr, " - ");

原文由 spirit 发布,翻译遵循 CC BY-SA 3.0 许可协议

Java 8 解决方案是这样的:

 Stream.of(1,2,3,4).map(String::valueOf).collect(Collectors.joining("-"))

原文由 user2935131 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题