检查String是否有效ArrayList

时间:2018-04-26 09:46:11

标签: java

我可能会收到一个String实际上是ArrayList,例如:String x = "["one", "two"]";

我想检查字符串是否是有效的ArrayList。

if(key.startsWith("[") && key.endsWith("]"))如果声明有效,但我想知道是否还有其他更好的方法?

有没有更好的方法?

1 个答案:

答案 0 :(得分:0)

toString() ArrayList的实施来自AbstractCollection

如果您查看该功能(靠近底部),您会发现它使用通用类型E附加到内部StringBuilder。这是因为代码不知道你将在集合中放入什么类型的元素 - 它可能是String s,如在你的例子中,或者它可能是更复杂的像Map s 。它会尝试调用每个元素的内部toString()函数,并默认使用Object的{​​{1}}方法。

您可以首先检查String是否以方括号toString()[开头和结尾,但对于任何进一步的操作,您必须对任何元素的]方法进行反向工程你正在加入toString()

ArrayList的字符串表示(上面似乎是您的示例)不引用其元素。因此,由于ArrayList<String>可以包括任意数量的逗号和空格,因此不可能区分元素。为了说明这一点,请考虑以下情形:

String

是否有两个元素String s1 = "a, "; String s2 = "b"; List<String> list = new ArrayList<>(); list.add(s1); list.add(s2); System.out.println(list.toString()); // [a, , b] a,或两个元素ba