有谁知道正则表达式速度怎么比split方法速度慢?
AddDataLv(lv_nc, msg.getData().getString("String").split("\n"));
AddDataLv(lv_nc, msg.getData().getString("String"), "\\d+.*.*]");
private void AddDataLv(ListView lv, String[] tmp) {
ArrayList<Map<String, String>> aap = new ArrayList<Map<String, String>>();
for (int i = 0; i < tmp.length; i++) {
if (tmp[i].indexOf("]") != -1) {
HashMap<String, String> tb = new HashMap<String, String>();
tb.put("list", tmp[i]);
aap.add(tb);
}
}
SpecialAdapter sa = new SpecialAdapter(this, aap, R.layout.listcontent,
new String[] { "list" }, new int[] { R.id.textList });
lv.setAdapter(sa);
}
private void AddDataLv(ListView lv, String tmp, String str) {
ArrayList<Map<String, String>> aap = new ArrayList<Map<String, String>>();
Pattern p = Pattern.compile(str);
Matcher m = p.matcher(tmp);
while (m.find()) {
HashMap<String, String> tb = new HashMap<String, String>();
tb.put("list", m.group());
aap.add(tb);
}
SimpleAdapter sa = new SimpleAdapter(this, aap, R.layout.listcontent,
new String[] { "list" }, new int[] { R.id.textList });
lv.setAdapter(sa);
}
[解决办法]
这个具体的原因有谁可以尽善尽美的说的详细呢?
这也是为什么鼓励大家尽量使用本地API的原因。
[解决办法]
一、正则一般都是第三方库,不是系统库
二、功能的强大是以效率为代价的。
[解决办法]
正则比split快就没天理了...
split就是一次循环判断分割位置,正则一般情况下是虚拟机上跑的一个虚拟机
[解决办法]