我可能会收到一个String
实际上是ArrayList
,例如:String x = "["one", "two"]";
我想检查字符串是否是有效的ArrayList。
if(key.startsWith("[") && key.endsWith("]"))
如果声明有效,但我想知道是否还有其他更好的方法?
有没有更好的方法?
答案 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,
或两个元素b
和a
?