将列表中除第一个元素外的所有元素连接成字符串

7

参考这个问题,它说明如何将列表连接为一个字符串。

我想知道从列表中删除一个元素,然后连接剩余的列表的最简单方法。例如,如果我的列表是:

[a, b, c, d]

我希望你能翻译这句话中的String:

"bcd"

如何最简洁地删除一个元素并将剩余的元素连接起来?我是Java的新手,我的解决方案感觉过于繁琐。


在Groovy中:['a', 'b', 'c', 'd'][1..-1].join() - Marslo
3个回答

21

如果您正在使用Java8,我喜欢使用流和可用的收集器:

String result = list.stream().skip(1).collect(Collectors.joining(""));

谢谢,非常漂亮。在我的公司电脑上,我被限制使用Java 7 :( - Adam Hughes
嗯,你应该使用一些具有StringUtils等效功能的库。或者只需使用StringBuilder编写自己的函数即可。 - Reut Sharabani

4
String[] data = {"a", "b", "c", "d"};
String[] f = Arrays.copyOfRange(data, 1, 4);
String r = Arrays.toString(f).substring(1).replaceAll("\\]$", "").replaceAll(", ", "");

它可与Java 6一起使用,而无需任何库即可完成工作。

1
如果您想像删除第一个元素一样删除另一个或多个元素,可以使用过滤器。在我看来,这是非常通用的方法。
    String [] array = {"a","b","c","d", "a"};
    List<String> list = Arrays.asList(array);
    String result = list.stream().filter(element -> !element.equals("a")).collect(Collectors.joining(","));
    String result2 = Arrays.stream(array).filter(element -> !element.equals("a")).collect(Collectors.joining(","));

    System.out.println(result);
    System.out.println(result2);

这也只适用于Java 8吗? - Adam Hughes
不幸的是,它只适用于Java 8。 - Ján Яabčan
Arrays.stream() 是什么? - Liam Clark
Arrays.stream() 也仅在 Java 8 中存在。 - Ján Яabčan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接