将ArrayList转换为字符串

4

我有一个 ArrayList,我需要将它转换为一个字符串。

每个值都将被放在引号内,并以逗号分隔,就像这样:

ArrayList list = [a,b,c]

String s = " ’a’,’b’,’c’ ";

我正在寻找高效的解决方案。


9
首先,你知道如何低效地做吗?我正在寻找高效的解决方案。 - Rohit Jain
@Roman:我认为这是一份作业。 - nkr
可能是将ArrayList转换为字符串的最佳方法的重复问题。 - Kai
4个回答

8
您可以按照以下步骤操作:-
  • Create an empty StringBuilder instance

    StringBuilder builder = new StringBuilder();
    
  • Iterate over your list

  • For each element, append the representation of each element to your StringBuilder instance

    builder.append("'").append(eachElement).append("', ");
    
  • Now, since there would be a last comma left, you need to remove that. You can use StringBuilder.replace() to remove the last character.

您可以查看StringBuilder文档,了解更多可用的方法。

我非常喜欢你摆脱多余逗号的想法。我总是在循环内部使用if,但你的解决方案更有效率。 - Zane
@Zane。嗯,你为什么需要一个“if”呢?但最好事先删除它。 - Rohit Jain
如果最终仍然要执行 append("'" + eachElement + "', "),那么使用 StringBuilder 有什么意义呢? - adarshr
@adarshr。StringBuilder不就是为了这个目的而存在的吗?用于修改现有字符串内容? - Rohit Jain
1
@Rohit Adarshr的抱怨是应该用3个附加操作符替换该行代码... 因为您在附加操作中使用了String相加,这正是您使用StringBuilder的初衷。 - billjamesdev
1
@BillJames。啊!你说得对。抱歉,adarsh。我会编辑的。 :) - Rohit Jain

0

也许这里有点过度,但是通过 Guava 提供了一种更加功能化的方法:

import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.collect.Collections2;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;


public class Main {

    public static void main(String ... args){
        List<String> list = new ArrayList(){{add("a");add("b");add("c");}};
        Collection<String> quotedList = Collections2.transform(list,new Function<String, String>() {
            @Override
            public String apply(String s) {
                return "'"+s+"'";
            }
        });
        System.out.println(Joiner.on(",").join(quotedList));
    }
}

0

使用Apache org.apache.commons.lang3.StringUtils库中的StringUtils。

    StringUtils.join(list, ", ");

或者

String s = (!list.isEmpty())? "'" + StringUtils.join(list , "', '")+ "'":null;

0

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