如何将List <object>转换为逗号分隔的String

时间:2018-02-04 05:44:00

标签: java

我从DB调用中获取Address个对象的列表。

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

每个Address都有int addressId属性。

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

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

Update tablename set postcode = #{postCode} where id in #{addressID}.

8 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:3)

String#join,接受分隔符NULLString元素(在您的情况下为Iterable

List

答案 2 :(得分:2)

转换为逗号分隔字符串使用类似这样的内容:

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

答案 3 :(得分:1)

可以使用toString()replaceAll()方法(使用常规表达式)获取所需的格式。

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

答案 4 :(得分:0)

迭代地址对象,检索它们的ID并创建一个String。像这样:

StringBuilder sb = new StringBuilder();

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

String ids = sb.toString();

答案 5 :(得分:0)

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

答案 6 :(得分:0)

int的列表-让Java执行:

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

答案 7 :(得分:0)

String.join(", ", addresses) ;