当前位置: 代码迷 >> Android >> 有哪位高手知道正则表达式速度如何比split方法速度慢
  详细解决方案

有哪位高手知道正则表达式速度如何比split方法速度慢

热度:103   发布时间:2016-05-01 21:59:44.0
有谁知道正则表达式速度怎么比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就是一次循环判断分割位置,正则一般情况下是虚拟机上跑的一个虚拟机
------解决方案--------------------
探讨

正则比split快就没天理了...

split就是一次循环判断分割位置,正则一般情况下是虚拟机上跑的一个虚拟机

------解决方案--------------------
探讨

引用:

正则比split快就没天理了...

split就是一次循环判断分割位置,正则一般情况下是虚拟机上跑的一个虚拟机

....
那也太慢了吧!
我用.NET的速度都没这么慢过!
。。。。。
不知道JAVA是怎么回事!
我等了快20秒以上!
有时还卡死!