首页 > 解决方案 > 检查 String 是否有效 ArrayList

问题描述

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

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

if(key.startsWith("[") && key.endsWith("]"))if 语句有效,但我想知道是否有另一种更好的方法?

有没有更好的方法?

标签: java

解决方案


toString()实现ArrayList来自AbstractCollection

如果您查看该函数(靠近底部),您会注意到它使用泛型类型E附加到 internal StringBuilder。这是因为代码不知道您将在集合中放入哪种元素 - 它可能是Strings,如您的示例中所示,也可能是更复杂的东西,如Maps。它将尝试调用每个元素的内部toString()函数并默认为Object'toString()方法。

您可以首先检查字符串是否以方括号[和开头和结尾],但对于任何进一步的事情,您必须对toString()您放入ArrayList.

an 的字符串表示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, b


推荐阅读