在Java中将String转换为ArrayList<String>

3

我使用list.toString()将包含"String1""String2"ArrayList<String> list转换为字符串。结果字符串格式为[String1,String2]。有没有办法将此结果转换回ArrayList<String>


1
看看String类的split方法吧 - 这可能是你正在寻找的。 - Dawood ibn Kareem
为什么不将ArrayList保留下来,而要将其转换成字符串再转换回ArrayList?通常你也可以使用toArray方法将ArrayList<String>转换为String[]。 - Matthias
1
你为什么需要这样做?你想要实现什么目标? - Ted Hopp
仅仅想知道list.toString()是否可逆。 - Kiran
3个回答

4
尝试应用以下代码。
String value = "[String1,String2,String3]";
value = value.subString(1,value.length()-1);
String[] split = value.split(",");
List<String> sampleList = Arrays.asList(split);

不行。这并不一定会返回一个ArrayList,这是问题所要求的。最后一行的右侧需要是new ArrayList<String>(Arrays.asList(split)) - Dawood ibn Kareem
@David Wallace,谢谢你的建议。为什么最后一行的右侧需要是new ArrayList<String>(Arrays.asList(split))?你能否解释清楚我的疑惑? - Woody
仅仅因为OP说他想要将结果作为“ArrayList”返回,但是“Arrays.asList”的规范并不要求它返回一个“ArrayList”。我相信当前的Java 7版本实际上从“Arrays.asList”返回一个“ArrayList”;但是这并不是规范所要求的,未来的版本可能会返回不同的内容。 - Dawood ibn Kareem
@David Wallace,谢谢您。在未来的工作中,我会遵循您宝贵的反馈意见。 - Woody

1
没有直接的方法。只需获取该字符串,从字符串中删除那些[],然后通过,进行拆分,然后添加回列表。
考虑给定的格式,类似于这样。
    String s = "[String1, String2]";
    s = s.substring(1, s.length() - 1);
    List<String> list = new ArrayList<>();
    for (String string : s.split(",")) {
        list.add(string.trim());
    }

请注意,这不是绝对可靠的;如果内部字符串有“,”(请注意空格,应该放在“split”中),那么您将得到额外的字符串。 - chrylis -cautiouslyoptimistic-

1
创建一个继承自ArrayList的新类。
public class CustomArrayList<Item> extends ArrayList<Item> {

并覆盖

toString

方法,它可以提供逗号分隔的字符串表示形式。现在使用

new CustomArrayList<Item>(Arrays.asList(list.toString().split(",")))

将其转换回ArrayList。


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