如何从ArrayList获取String值并将它们存储在Java 8中用逗号分隔的单个字符串中?
发布时间:2020-05-24 19:42:20 所属栏目:Java 来源:互联网
导读:我有一个带有一些字符串的ArrayList.我想将ArrayList中的数字列表存储在由逗号分隔的单个字符串中,如下所示. String s = 350000000000050287,392156486833253181,350000000000060764 这是我的清单: ListString e = new ArrayListString(); e.add(350000
|
我有一个带有一些字符串的ArrayList.我想将ArrayList中的数字列表存储在由逗号分隔的单个字符串中,如下所示. String s = "350000000000050287,392156486833253181,350000000000060764" 这是我的清单: List<String> e = new ArrayList<String>();
e.add("350000000000050287");
e.add("392156486833253181");
e.add("350000000000060764");
我一直试图通过以下方式实现: StringBuilder s = new StringBuilder();
for (String id : e){
s.append(id+",");
}
唯一的问题是,这会在最后添加一个逗号,我不希望这样.最好的方法是什么? 谢谢 解决方法最简单的解决方案是使用 String.join:List<String> list = new ArrayList<String>();
list.add("11");
list.add("22");
list.add("33");
String joined = String.join(",",list);
System.out.println(joined);
//prints "11,22,33"
请注意,这需要Java 8. 但是,如果要支持旧版本的Java,可以使用迭代器修复代码: StringBuilder sb = new StringBuilder();
Iterator<String> iterator = list.iterator();
// First time (no delimiter):
if (iterator.hasNext()) {
sb.append(iterator.next());
// Other times (with delimiter):
while (iterator.hasNext()) {
sb.append(",");
sb.append(iterator.next());
}
}
或者只是使用布尔值来确定第一次: StringBuilder sb = new StringBuilder();
boolean firstTime = true;
for (String str : list) {
if (firstTime) {
firstTime = false;
} else {
sb.append(",");
}
sb.append(str);
}
但后者显然不如使用迭代器比较每个方法生成的字节码.然而,正如Tagir Valeev所指出的那样,这可能不是真的:这个benchmark向我们表明,使用标志的性能更高,从10开始进行多次迭代. 如果有人能解释为什么会这样,我很高兴知道. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
