如何将向量元素转换为逗号分隔的字符串

3

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

为此,我需要从该 Vector 中制作一个由逗号分隔的字符串,以便将其传递给 SQL 查询

我正在做类似于以下内容的操作。

 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的最后一个元素是逗号(,),我希望省略它。

我已经检查了Vector API并找到了这个方法lastElement()(返回最后一个元素而不是boolean)。

如何在循环中检查它或是否有更聪明/高效的方法来做到这一点?


如果(items.equals(vector.lastElement())){ // 这里不要添加逗号 } - undefined
如果您能使用Java 8,请查找 String.join() - undefined
在编程中,如果要比较一个循环中的每个元素与字符串(例如在向量 {a, aa, aaaa, aaaaaa} 中)进行比较,这种方法并不高效。建议使用 @user 来代替。 - undefined
7个回答

2

2
我会选择使用 String.join 方法。
final List<String> itemList = Arrays.asList("item1", "item2", "item3");
final String commaSeparated = String.join(",", itemList);
System.out.println(commaSeparated); // -> item1,item2,item3

今日免费次数已满, 请开通会员/明日再来

1

看一下像Google Guava这样的库

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

1

既然你正在使用 StringBuilder,那么只需删除最后一个逗号即可:

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

0
将你的循环改为以下方式:
for (int i=0; i<itemList.size(); i++) {
  list.append(itemList.get(i));
  if(i != itemList.size() - 1) {
      list.append(",");           
  } 

在内部,向量使用数组,并且您现在通过索引访问元素,而不是使用高级的for each循环。


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

0

只需使用,

StringUtils.join(itemList, ", ");

2
这个解决方案已经被提出两次了,在其他两个例子中,他们实际上链接了你可以从那个网站获取该工具的地方。 - undefined

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