如何将一个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中。
使用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 / concat & Splitfunction:
将逗号 (“ , ”)的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(", ", ",");