如何将List<Object>转换为逗号分隔的字符串

问题描述 投票:0回答:9

我从数据库调用中获取

Address
对象列表。

ArrayList<Address> addresses = new ArrayList<>();

每个

Address
都有一个
int addressId
属性。

我正在编写一个更新查询,在

IN
子句中,我发送了整个
Address
对象列表,并且我得到了 ibatis
TypeException
。如何将
List<Address>
转换为可以发送到更新查询的逗号分隔字符串?

我的更新查询看起来像:::

Update tablename set postcode = #{postCode} where id in #{addressID}.
java sql ibatis
9个回答
61
投票

使用 Java 8,您可以一行完成:

String addressID = addresses
           .stream()
           .map(a -> String.valueOf(a.addressId))
           .collect(Collectors.joining(","));

16
投票

要转换为逗号分隔的字符串,请使用以下内容:

String commaSeparatedStr = addresses
        .stream()
        .map(String::valueOf)
        .collect(Collectors.joining(","));

8
投票

String#join
,它接受分隔符
String
Iterable
元素(在您的情况下是
List

 List<String> strings = new LinkedList<>();
 strings.add("Java");
 strings.add("is");
 strings.add("cool");
 String message = String.join(",", strings); //pass delimiter and List
 //message returned is: "Java,is,cool"

3
投票

迭代地址对象,检索它们的 ID 并创建一个字符串。像这样的东西:

StringBuilder sb = new StringBuilder();

for (Address a: adresses) {
  sb.append(a.getId());
  sb.append(", ");
}

String ids = sb.toString();

3
投票
String.join(", ", addresses) ;

1
投票
StringBuilder addressIds = new StringBuilder("");
for(Address address : addresses){
  if (addressIds.length() > 1)  
    addressIds.append(", ");
  addressIds.append("'").append(address.id()).append("'");
}

//in this method you can directly send the string in Update tablename + set postcode + where id in <String>.
methodOfUpdateInQuery(addressIds.toString());

1
投票

可以使用

toString()
replaceAll()
方法(使用正则表达式)获得所需的格式。

String addressString = addresses.toString().replaceAll("[ \\[ \\] ]", "");

1
投票

int
列表 - 让 Java 来做:

String tmp = addresses.toString();
String csList = tmp.substring(1, tmp.length()-1);

0
投票

6 月 21 日更新

使用下面的代码片段可用于生成逗号分隔的字符串

String finalString = list.map((item) => item).join(', ');
© www.soinside.com 2019 - 2024. All rights reserved.