如何在不显式迭代 List 的情况下将 List < String > 转换为逗号分隔的字符串

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

现在我希望这个列表的输出为1,2,3,4,而不需要 明确地对它进行迭代。

287077 次浏览
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)

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

Http://commons.apache.org/proper/commons-lang/javadocs/api-3.3.2/org/apache/commons/lang3/stringutils.html

以下内容:

String joinedString = ids.toString()

会给你一个逗号分隔的列表。

您将需要做一些后期处理来删除方括号,但是不需要太复杂。

使用 Java8:

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

对于 Java7-,有一种肮脏的方式(< em > 注意: 只有在列表 中不插入包含 ", "的字符串时,它才会工作)-显然,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(", ", ",");

如果要将 list 转换为 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(", ", "','");

如果您使用的是 Eclipse 集合(以前的 GS 集合) ,则可以使用 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 集合的提交者。

我有字符串数组列表,我需要转换为逗号分隔的列表,没有空格。ArrayListtoString ()方法添加方括号、逗号和空格。我尝试了下面的正则表达式方法。

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)

谢谢。

最快的方法是

StringUtils.join(ids, ",");

一班轮(纯爪哇)

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

关于 Android 的使用:

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

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

这段代码的输出将是: Veeru,Nikhil,Ashish,Paritosh

代替 list 的输出[ 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(", ", ",");

Java8解决方案,如果它不是一个字符串集合:

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

数组列表上加入/concat & 分开功能:

加入/联系的所有数组元素与 逗号(“ ,”)字符串。

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);

分开的字符串的所有元素数组与 逗号(“ ,”)。

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);
}

成交

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

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();
}