如何将List <string>转换为逗号分隔的字符串,而不显式迭代List </string>

时间:2012-06-01 12:57:30

标签: java list

List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");

现在我希望此列表中的输出为1,2,3,4,而显式迭代它。

13 个答案:

答案 0 :(得分:405)

在Android上使用:

android.text.TextUtils.join(",", ids);

答案 1 :(得分:134)

使用Java 8:

String csv = String.join(",", ids);

使用Java 7-,有一种肮脏的方式( 注意:仅当您不在列表中插入包含", "的字符串时,它才有效 ) - 很明显,List#toString会执行一个循环来创建idList,但它不会出现在您的代码中:

List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
String idList = ids.toString();
String csv = idList.substring(1, idList.length() - 1).replace(", ", ",");

答案 2 :(得分:100)

import com.google.common.base.Joiner;

Joiner.on(",").join(ids);

或者您可以使用 StringUtils

   public static String join(Object[] array,
                              char separator)

   public static String join(Iterable<?> iterator,
                              char separator)

将提供的数组/ iterable的元素连接到包含提供的元素列表的单个String中。

http://commons.apache.org/proper/commons-lang/javadocs/api-3.3.2/org/apache/commons/lang3/StringUtils.html

答案 3 :(得分:60)

如果您想将列表转换为CSV格式.........

List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");

// CSV format
String csv = ids.toString().replace("[", "").replace("]", "")
            .replace(", ", ",");

// CSV format surrounded by single quote 
// Useful for SQL IN QUERY

String csvWithQuote = ids.toString().replace("[", "'").replace("]", "'")
            .replace(", ", "','");

答案 4 :(得分:51)

最快的方式是

StringUtils.join(ids, ",");

答案 5 :(得分:20)

以下内容:

String joinedString = ids.toString()

会给你一个逗号分隔的列表。 See docs for details

您需要进行一些后处理以删除方括号,但没有什么太棘手。

答案 6 :(得分:14)

一个班轮(纯Java

list.toString().replace(", ", ",").replaceAll("[\\[.\\]]", "");

答案 7 :(得分:12)

加入/结识&amp; ArrayList 上的拆分功能:

加入/加入 arraylist的所有元素与逗号(&#34; &#34;)为字符串。

List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
String allIds = TextUtils.join(",", ids);
Log.i("Result", allIds);

使用逗号(&#34; &#34;)拆分所有String元素转换为arraylist。

String allIds = "1,2,3,4";
String[] allIdsArray = TextUtils.split(allIds, ",");
ArrayList<String> idsList = new ArrayList<String>(Arrays.asList(allIdsArray));
for(String element : idsList){
    Log.i("Result", element);
}

完成

答案 8 :(得分:6)

我有String的StringList,我需要转换为逗号分隔列表,没有空格。 ArrayList toString()方法添加方括号,逗号和空格。我尝试使用正则表达式方法。

List<String> myProductList = new ArrayList<String>();
myProductList.add("sanjay");
myProductList.add("sameer");
myProductList.add("anand");
Log.d("TEST1", myProductList.toString());     // "[sanjay, sameer, anand]"
String patternString = myProductList.toString().replaceAll("[\\s\\[\\]]", "");
Log.d("TEST", patternString);                 // "sanjay,sameer,anand"

请评论更高效的逻辑。 (代码适用于Android / Java)

Thankx。

答案 9 :(得分:5)

Java 8解决方案,如果它不是字符串集合:

{Any collection}.stream()
    .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
    .toString()

答案 10 :(得分:3)

如果您使用Eclipse Collections(以前称为GS Collections),则可以使用makeString()方法。

List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");

Assert.assertEquals("1,2,3,4", ListAdapter.adapt(ids).makeString(","));

如果您可以将ArrayList转换为FastList,则可以摆脱适配器。

Assert.assertEquals("1,2,3,4", FastList.newListWith(1, 2, 3, 4).makeString(","));

注意:我是Eclipse集合的提交者。

答案 11 :(得分:3)

如果对象下有代码,您可以使用下面的代码。

String getCommonSeperatedString(List<ActionObject> actionObjects) {
    StringBuffer sb = new StringBuffer();
    for (ActionObject actionObject : actionObjects){
        sb.append(actionObject.Id).append(",");
    }
    sb.deleteCharAt(sb.lastIndexOf(","));
    return sb.toString();
}

答案 12 :(得分:0)

下面给出的代码是将List转换为逗号分隔的字符串而不显式迭代List,因为你必须创建一个列表并在其中添加项目而不是将其转换为逗号分隔的字符串

此代码的输出将为:Veeru,Nikhil,Ashish,Paritosh

而不是列表的输出[Veeru,Nikhil,Ashish,Paritosh]

String List_name;
List<String> myNameList = new ArrayList<String>();
myNameList.add("Veeru");
myNameList.add("Nikhil");
myNameList.add("Ashish");
myNameList.add("Paritosh");

List_name = myNameList.toString().replace("[", "")
                    .replace("]", "").replace(", ", ",");