List<String> ids = new ArrayList<String>();
ids.add("1");
ids.add("2");
ids.add("3");
ids.add("4");
Теперь я хочу, чтобы результат из этого списка был 1,2,3,4 без явно, итерации по нему.
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);
С Java 8:
String csv = String.join(",", ids);
С Java 7- существует грязный способ (note: он работает, только если вы не вставляете строки, содержащие ", "
в свой список) - очевидно, 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(", ", ",");
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 в одну строку, содержащую предоставленный список элементов.
Если вы хотите преобразовать список в формат 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()
предоставит вам список с разделителями-запятыми. Подробнее см. в документах.
Вам нужно будет выполнить некоторую пост-обработку, чтобы удалить квадратные скобки, но ничего слишком сложного.
Объединение /concat и Разделить на ArrayList:
В Join/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);
В разделить все элементы 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);
}
Готово
Один лайнер (чистый Java)
System.out.println(joinList(ids));
public static String joinList(List list){
return list.toString().replaceAll("[\\[.\\].\\s+]", "");
}
У меня есть ArrayList из String, который мне нужно преобразовать в список, разделенный запятыми, без пробела. Метод 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.
Решение Java 8, если это не набор строк:
{Any collection}.stream()
.collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
.toString()
Если вы используете 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.
Вы можете использовать нижеприведенный код, если объект находится под ним.
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();
}
Вот приведенный ниже код, чтобы преобразовать 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(", ", ",");