Преобразование массива в строку в Java/groovy
У меня есть список вроде этого:
List tripIds = new ArrayList()
def sql = Sql.newInstance("jdbc:mysql://localhost:3306/steer", "root",
"", "com.mysql.jdbc.Driver")
sql.eachRow("SELECT trip.id from trip JOIN department WHERE organization_id = trip.client_id AND department.id =1") {
println "Gromit likes ${it.id}"
tripIds << it.id
}
теперь при печати трипид дает мне значение
[1,2,3,4,5,6,]
теперь я хочу преобразовать этот список в простую строку, например
1,2,3,4,5,6
Как я могу это сделать
Ответы
Ответ 1
Используйте join
, например,
tripIds.join(", ")
Несвязанный, но если вы просто хотите создать список из другого списка, вам лучше сделать что-то вроде map
или collect
вместо того, чтобы вручную создавать список и добавлять к нему, что менее идиоматический, например (Непроверенные),
def sql = Sql.newInstance("jdbc:mysql://localhost:3306/steer", "root", "", "com.mysql.jdbc.Driver")
def tripIds = sql.map { it.id }
Или, если вы только заботитесь о результирующей строке,
def tripIds = sql.map { it.id }.join(", ")
Ответ 2
В groovy:
def myList = [1,2,3,4,5]
def asString = myList.join(", ")
Ответ 3
Используйте метод объединения, который Groovy добавляет в коллекцию
List l = [1,2,3,4,5,6]
assert l.join(',') == "1,2,3,4,5,6"
Ответ 4
String str = tripIds.toString();
str = str.substring(1, str.length() - 1);
Ответ 5
вы можете попробовать следующий подход для преобразования списка в String
StringBuffer sb = new StringBuffer();
for (int i=0; i<tripIds.size(); i++)
{
if(i!=0){
sb.append(",").append(tripIds.get(i));
}else{
sb.append(tripIds.get(i));
}
}
String listInString = sb.toString();
System.out.println(listInString);
Пример
ArrayList<String> tripIds = new ArrayList<String>();
tripIds.add("a");
tripIds.add("b");
tripIds.add("c");
StringBuffer sb = new StringBuffer();
for (int i=0; i<tripIds.size(); i++)
{
if(i!=0){
sb.append(",").append(tripIds.get(i));
}else{
sb.append(tripIds.get(i));
}
}
String listInString = sb.toString();
System.out.println(listInString);