2012-01-10 37 views
16

我有一個這樣的名單:轉換Array對Java字符串/常規

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 
     } 
現在

上印刷tripids給我看重

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

現在我想這個列表轉換爲簡單的字符串像

1,2,3,4,5,6 

我該怎麼辦呢

回答

30

使用join,例如,

tripIds.join(", ") 

無關,但如果你只是想創建的從另一個列表中的東西的清單,你會更好做一些像mapcollect代替手動創建一個列表並追加到它,這是不太習語,例如(未經測試),

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(", ") 
-1
String str = tripIds.toString(); 
str = str.substring(1, str.length() - 1); 
6

在Groovy:

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

使用Groovy中就將此到收藏

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

你可以試試下面的方法來列表轉換成字符串

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

好像很多工作。爲什麼在這兩種情況下重複添加'tripIds.get(i)'的代碼?對於這個問題,爲什麼要顯示兩次創建的代碼;如果把它放在一個方法中,並且從示例中調用它,它不會更加垂直空間友好嗎? – 2012-01-10 12:48:08

+3

我假設你通過這條線獲得報酬? – 2012-01-10 15:49:45