如何将一个List <String>转换为一个逗号分隔的string,而不需要迭代List

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

现在我想从这个列表的输出作为1,2,3,4没有明确迭代它。

在Android上使用:

 android.text.TextUtils.join(",", ids); 
 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

使用Java 8:

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

对于Java 7,有一个肮脏的方法( 注意:只有在你的列表中没有插入包含", "string时才有效 ) – 显然, List#toString会执行一个循环来创buildidList但是它不会出现在你的代码中:

 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(", ", ","); 

如果你想将列表转换成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(", ", "','"); 

最快的方法是

 StringUtils.join(ids, ","); 

下列:

 String joinedString = ids.toString() 

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

你将需要做一些后处理删除方括号,但没有太棘手。

ArrayList上的Join / concatSplitfunction:

逗号 (“ ”)的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); 

逗号 (“ ”)将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); } 

完成

One Liner( 纯Java

 System.out.println(joinList(ids)); public static String joinList(List list){ return list.toString().replaceAll("[\\[.\\].\\s+]", ""); } 

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

 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。

Java 8的解决scheme,如果它不是一个string的集合:

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

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

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

如果您正在使用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集合的提交者。

下面给出的代码将List转换为逗号分隔的string,而不需要迭代List,因为您必须创build列表并添加项目,而不是将其转换为逗号分隔的string

这个代码的输出将是: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(", ", ",");