如何从ArrayList获取String值并将它们存储在Java 8中用逗号分隔
发布时间:2020-12-14 23:34:39 所属栏目:Java 来源:网络整理
导读:我有一个带有一些字符串的ArrayList.我想将ArrayList中的数字列表存储在由逗号分隔的单个字符串中,如下所示. String s = "350000000000050287,392156486833253181,350000000000060764" 这是我的清单: ListString e = new ArrayListString(); e.add("3500000
我有一个带有一些字符串的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开始进行多次迭代. 如果有人能解释为什么会这样,我很高兴知道. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – Android工作室中的Android URLConnection.setReque
- java – 无法将db’/data/data/my.easymedi.controller/dat
- java – J2ME基于位置的API是否可以在没有GPS的情况下工作
- java – 编译时在JSP页面中查找错误
- java面向对象基础_final详细介绍
- 如何最好地表示数据库中的常量(枚举)(INT与VARCHAR)?
- SpringBoot实战(四)之使用JDBC和Spring访问数据库
- java – 在Netbeans中自动生成源代码和文档jar
- java – 为什么ZonedDateTime类没有实现TemporalAdjuster接
- java – JIT编译代码驻留在哪里?