首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从集合/数组/列表创建逗号分隔字符串的最复杂方法是什么?

从集合/数组/列表创建逗号分隔字符串的最复杂方法是什么?
EN

Stack Overflow用户
提问于 2008-10-15 17:03:21
回答 25查看 153.8K关注 0票数 98

在我使用数据库的过程中,我注意到我编写查询字符串,在这个字符串中,我必须在列表/数组/集合的where子句中设置一些限制。应该如下所示:

代码语言:javascript
复制
select * from customer 
where customer.id in (34, 26, ..., 2);

您可以简化这一过程,将其简化为这样一个问题:您拥有字符串集合,并且希望在一个字符串中创建此字符串的逗号分隔列表。

我到目前为止使用的方法是这样的:

代码语言:javascript
复制
String result = "";
boolean first = true;
for(String string : collectionOfStrings) {
    if(first) {
        result+=string;
        first=false;
    } else {
        result+=","+string;
    }
}

但正如你所见,这是非常丑陋的。乍一看,您无法看到那里发生了什么,特别是当构造的字符串(就像每个SQL查询一样)变得复杂时。

你的(更)优雅的方式是什么?

EN

回答 25

Stack Overflow用户

发布于 2008-10-15 19:05:13

使用Google Guava APIjoin方法:

代码语言:javascript
复制
Joiner.on(",").join(collectionOfStrings);
票数 89
EN

Stack Overflow用户

发布于 2008-10-15 18:13:37

我只看了今天做这件事的代码。这是AviewAnew答案的一个变体。

代码语言:javascript
复制
collectionOfStrings = /* source string collection */;
String csList = StringUtils.join(collectionOfStrings.toArray(), ",");

我们使用的StringUtils ( <-- commons.lang 2.x或commons.lang 3.x link )来自Apache Commons

票数 77
EN

Stack Overflow用户

发布于 2008-10-16 13:10:22

我发现迭代器习惯用法很优雅,因为它有一个对更多元素的测试(为了简洁,省略了null/空测试):

代码语言:javascript
复制
public static String convert(List<String> list) {
    String res = "";
    for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
        res += iterator.next() + (iterator.hasNext() ? "," : "");
    }
    return res;
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/205555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档