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);
}

解决方案 »

  1.   

    这个具体的原因有谁可以尽善尽美的说的详细呢?
    这也是为什么鼓励大家尽量使用本地API的原因。
      

  2.   

    ...这个不是系统里的?
    我直接引用就行了!
    不用引用DLL
      

  3.   

    正则比split快就没天理了...split就是一次循环判断分割位置,正则一般情况下是虚拟机上跑的一个虚拟机
      

  4.   

    split肯定比正则快或者跟正则一样快,split是用于分割字符,只需要前向扫描一遍就可以了,正则还有回朔的可能性。即使使用无回朔文法,也肯定需要辅助栈
      

  5.   

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

  6.   

    昨天回的没了,本来不想再打的。。
    split绝对比正则快或者跟正则一样快。split是用于字符串分隔,只需要前向扫描一遍就行了,而正则可能有回朔,即便能用非回朔文法,也就跟split差不多快而已