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

Pra*_*mar 161 java list

List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
Run Code Online (Sandbox Code Playgroud)

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

JJD*_*JJD 434

在Android上使用:

android.text.TextUtils.join(",", ids);
Run Code Online (Sandbox Code Playgroud)

  • 该死的,我希望我可以投票几次!帮我几次!! :) (14认同)
  • 这个答案仅限于ANDROID!使用下面的StringUtils答案 (3认同)
  • TextUtils 有这么多隐藏的宝石 - Google 应该在推广它们方面做得更好......他们还有其他很棒但不为人所知的 util 类。 (2认同)

ass*_*ias 145

使用Java 8:

String csv = String.join(",", ids);
Run Code Online (Sandbox Code Playgroud)

使用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(", ", ",");
Run Code Online (Sandbox Code Playgroud)


Mas*_*uso 102

import com.google.common.base.Joiner;

Joiner.on(",").join(ids);
Run Code Online (Sandbox Code Playgroud)

或者您可以使用StringUtils:

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

   public static String join(Iterable<?> iterator,
                              char separator)
Run Code Online (Sandbox Code Playgroud)

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

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

  • `StringUtils.join`也接受`Collection`和`Iterator`对象. (7认同)

mil*_*hal 61

如果要将列表转换为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(", ", "','");
Run Code Online (Sandbox Code Playgroud)

  • 仅当列表中的字符串不包含任何"[,]"时才有效. (8认同)

小智 53

最快的方法是

StringUtils.join(ids, ",");
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记导入`StringUtils`:`import org.apache.commons.lang3.StringUtils` commons-lang3是一个很棒的String相关方法库. (4认同)
  • StringUtils获胜! (2认同)

Dan*_*umb 22

下列:

String joinedString = ids.toString()
Run Code Online (Sandbox Code Playgroud)

会给你一个逗号分隔的列表.详情请参见文档.

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


Puj*_*ava 15

一个班轮(纯Java)

list.toString().replace(", ", ",").replaceAll("[\\[.\\]]", "");
Run Code Online (Sandbox Code Playgroud)

  • 什么是第一个替换所做的?我们为什么用","代替","? (2认同)

Hir*_*tel 12

ArrayList加入/连接拆分函数:

加入/ CONCAT ArrayList中的所有元素的逗号(" ")为String.

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);
Run Code Online (Sandbox Code Playgroud)

分割字符串的所有元件一起的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);
}
Run Code Online (Sandbox Code Playgroud)

完成


SHS*_*SHS 6

我有StringList的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"
Run Code Online (Sandbox Code Playgroud)

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

Thankx.


小智 5

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

{Any collection}.stream()
    .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
    .toString()
Run Code Online (Sandbox Code Playgroud)


小智 5

如果对象下有属性,您可以使用以下代码。

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();
}
Run Code Online (Sandbox Code Playgroud)