【发布时间】:2015-07-01 06:11:56
【问题描述】:
我有一个这样的字符串:
pet:cat::car:honda::location:Japan::food:sushi
现在: 表示键值对,而:: 分隔键值对。
我想将键值对添加到地图中。
我可以使用:
Map<String, String> map = new HashMap<String, String>();
String test = "pet:cat::car:honda::location:Japan::food:sushi";
String[] test1 = test.split("::");
for (String s : test1) {
String[] t = s.split(":");
map.put(t[0], t[1]);
}
for (String s : map.keySet()) {
System.out.println(s + " is " + map.get(s));
}
但是有没有一种有效的方法来做到这一点?
我觉得代码效率低,因为我使用了 2 个String[] 对象并调用了两次split 函数。
另外,我正在使用t[0] 和t[1],如果没有值,它们可能会抛出ArrayIndexOutOfBoundsException。
【问题讨论】:
-
你能解释一下你认为它没有效率吗?顺便说一句,这不是 codereview.stackexchange.com,你应该去那里试试。
-
第一件事是我是 Java 新手,我一直认为有一种更简单的方法来做我所做的事情。接下来是我使用了 2 个字符串数组对象并调用了 split 函数两次。另外我正在使用 t[0] 和 t[1] 如果没有值,可能会抛出 ArrayIndexOutOfBounds 异常。
-
这个方法绝对没问题。
-
@Tom 我看到很多问题都要求以更好的方式做事。这就是为什么我在这里问同样的问题。
-
@ViChU 您可以将其添加到您的问题中吗?如果您对某种算法有疑虑,您应该解释它,以便回答问题的人可以解决。