如何将Vector元素转换为逗号分隔的String

时间:2014-12-20 12:27:49

标签: java string vector stringbuilder

我有Vector<String>包含一些项目。我想在数据库中搜索这些项目。

为此,我需要在Vector之外创建一个由逗号分隔的项组成的字符串,以便我可以将其传递给SQL Query

我正在做这样的事情。

 StringBuilder list = new StringBuilder("");
        for (String items : itemList) {
          if(its last element then) //How to check here  
            list.append(items);
          else       
            list.append(items+",");
       }

但是这会返回"item1,item2,item3,"

之类的输出

如果它是Vector的最后一个元素,我想省略最后comma (,)

我检查了Vector API,发现此方法lastElement()(返回的最后一个元素不是boolean)。

如何在循环中检查它还是有更智能/更有效的方法吗?

7 个答案:

答案 0 :(得分:2)

这可能是Java: function for arrays like PHP's join()?

的副本

不要重新发明轮子!这已经进行了很多次,单元测试和维护。所以使用它们,不要制作自己的。

您可以使用Apache Commons StringUtils并使用join上的Iterable方法(Vector

StringUtils.join(itemList, ", ")

另外,正如Tom在你的问题的评论中指出的那样,在Java 8中你可以使用String.join()

答案 1 :(得分:1)

查看Google Guava等图书馆

Joiner.on(",").useForNull("null").join(itemList)

答案 2 :(得分:1)

由于您使用StringBuilder,因此删除最后一个逗号更容易:

    StringBuilder list = new StringBuilder("");
    for (String items : itemList) {
        list.append(items).append(',');
    }
    if ( list.length() > 0 ) {
        list.setLength(list.length() - 1 );
    }

答案 3 :(得分:1)

我会选择 String.join 方法。

final List<String> itemList = Arrays.asList("item1", "item2", "item3");
final String commaSeparated = String.join(",", itemList);
System.out.println(commaSeparated); // -> item1,item2,item3

一个漂亮而干净的解决方案。仅适用于Java 8。

答案 4 :(得分:0)

按以下方式更改循环:

for (int i=0; i<itemList.size(); i++) {
  list.append(itemList.get(i));
  if(i != itemList.size() - 1) {
      list.append(",");           
  } 

内部向量使用数组,您现在逐个索引元素,而不是每个循环使用advance。

答案 5 :(得分:0)

有几个第三方图书馆为您提供了繁重的工作,例如Apache Commons LangStringUtils

String list = StringUtils.join(items, ',');

如果您必须自己完成此操作,我将从第一个元素开始,并为每个后续元素添加逗号和元素:

StringBuilder list = new StringBuilder();
Iterator<String> iter = items.iterator();

if (iter.hasNext()) {
    // Special treatment for the first item
    list.append(iter.next());

    // The rest of the items
    while (iter.hasNext()) {
        list.append(',').append(iter.next());
    }
}

答案 6 :(得分:-1)

只需使用,

StringUtils.join(itemList, ", ");