Java中如何将列表元素转为单引号包裹且逗号分隔的字符串?
Java中如何将列表元素转为单引号包裹且逗号分隔的字符串?
嗨,我来帮你解决这个问题~
你当前的代码问题很明确:每次循环都直接覆盖了val变量的值,之前循环生成的内容全被丢掉了,所以最后只保留了最后一次循环的结果'B',。而且就算你改成累加拼接,最后还会多出来一个末尾的逗号,得一起处理这个问题。
下面给你几种实用的解决办法:
方法一:用StringBuilder拼接(推荐,效率更高)
字符串在Java里是不可变的,循环里直接拼接字符串会产生很多临时对象,用StringBuilder是更高效的做法,还能轻松处理末尾逗号的问题:
String val = ""; List<String> holders = new ArrayList<>(); holders.add("A"); holders.add("B"); StringBuilder sb = new StringBuilder(); for (int i = 0; i < holders.size(); i++) { // 给当前元素套上单引号 sb.append("'").append(holders.get(i)).append("'"); // 只有不是最后一个元素的时候才加逗号 if (i != holders.size() - 1) { sb.append(","); } } val = sb.toString(); System.out.println(val); // 输出:'A','B'
方法二:Java 8+用Stream API(最简洁)
如果你的项目用的是Java 8及以上版本,用Stream API一行就能搞定,代码更简洁易读:
import java.util.stream.Collectors; List<String> holders = new ArrayList<>(); holders.add("A"); holders.add("B"); String val = holders.stream() .map(item -> "'" + item + "'") // 给每个元素套上单引号 .collect(Collectors.joining(",")); // 用逗号把所有元素连接起来 System.out.println(val); // 输出:'A','B'
方法三:普通字符串拼接(不推荐,仅作参考)
要是你坚持想用基础的字符串拼接方式,记得先判断是否是第一个元素,避免开头多逗号,同时也能处理末尾逗号的问题:
String val = ""; List<String> holders = new ArrayList<>(); holders.add("A"); holders.add("B"); for (int i = 0; i < holders.size(); i++) { // 不是第一个元素的话,先加逗号 if (i != 0) { val += ","; } // 再拼接当前元素的单引号包裹内容 val += "'" + holders.get(i) + "'"; } System.out.println(val); // 输出:'A','B'
总结一下,优先用StringBuilder或者Stream API,前者效率高,后者代码简洁,根据你的项目版本和需求选就行~
备注:内容来源于stack exchange,提问作者Pratik
相关产品推荐
相关产品推荐

