在Java/Groovy中将数组转换为字符串

32
我有一个像这样的列表:
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

我该如何做到这一点?

5个回答

58
使用 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(", ")

16
在Groovy中:
def myList = [1,2,3,4,5]
def asString = myList.join(", ")

9

使用Groovy添加到Collection的join方法

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

-1
String str = tripIds.toString();
str = str.substring(1, str.length() - 1);

-3
你可以尝试以下方法将列表转换为字符串。
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);

似乎是很多工作啊。为什么要在两个条件中重复使用tripIds.get(i)的代码呢?实际上,为什么不把创建的代码放在一个方法中,然后只需从示例中调用它,这样不是更节省垂直空间吗? - Dave Newton
4
我猜你是按行收费? - Dónal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接