2012-01-10 17 views
16

tengo una lista como esta:Convertir arreglo a cadena en Java/maravilloso

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 
     } 

ahora en tripids impresión me da valoro

[1,2,3,4,5,6,] 

ahora quiero convertir esta lista a la simple cadena como

1,2,3,4,5,6 

¿Cómo puedo hacerlo

Respuesta

30

Uso join, por ejemplo,

tripIds.join(", ") 

sin relación, pero si lo que desea es crear una lista de algo de otra lista, que sería mejor hacer algo así como un map o collect vez de crear manualmente una lista y anexarla, que es menos idiomática, por ejemplo (No probado),

def sql = Sql.newInstance("jdbc:mysql://localhost:3306/steer", "root", "", "com.mysql.jdbc.Driver") 
def tripIds = sql.map { it.id } 

O si lo única se preocupan por la cadena resultante,

def tripIds = sql.map { it.id }.join(", ") 
-1
String str = tripIds.toString(); 
str = str.substring(1, str.length() - 1); 
6

En maravilloso:

def myList = [1,2,3,4,5] 
def asString = myList.join(", ") 
5

Uso del join method que maravilloso addes a la Colección

List l = [1,2,3,4,5,6] 
assert l.join(',') == "1,2,3,4,5,6" 
-2

se puede probar el siguiente enfoque a la lista de convertir en cadena

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

Ejemplo

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

parece como un montón de trabajo. ¿Por qué repetir el código para agregar 'tripIds.get (i)' en ambas condiciones? Para el caso, ¿por qué mostrar el código para hacer la creación dos veces? ¿No sería más cómodo para el espacio vertical ponerlo en un método y simplemente llamarlo desde el ejemplo? –

+3

Supongo que te pagan por la línea? –