字符串操作挂在Android上?

时间:2011-09-15 03:40:15

标签: java android string

我正在编写一个Android应用程序,要求我检索网页的html代码并获取并返回特定元素。 出于某种原因,代码似乎挂起或花了不可思议的长时间进行基本的字符串操作。

    URL url = new URL(link);
    URLConnection urlConnection = url.openConnection();
    InputStreamReader i = new InputStreamReader(
            urlConnection.getInputStream());
    BufferedReader in = new BufferedReader(i);
    String check = "";
    String html = "";
    while((check = in.readLine()) != null)
        html += check;

在具有大学连接速度的仿真器和设备上完成分钟。而

    URL url = new URL(link);
    URLConnection urlConnection = url.openConnection();
    InputStreamReader i = new InputStreamReader(
            urlConnection.getInputStream());
    BufferedReader in = new BufferedReader(i);
    String check = "";
    String html = "";
    int p = 0;
    while((check = in.readLine()) != null)
        p++;

需要约5秒钟,并在html页面中返回正确的行数。 为什么字符串操作需要这么长时间?仅仅是为了透视,页面大约有4000行。

1 个答案:

答案 0 :(得分:2)

因为你做错了。使用StringBuilder构建大型字符串。

StringBuilder sb = new StringBuilder();
while((check = in.readLine()) != null)
    sb.append(check);
html = sb.toString();

Why StringBuilder when there is String?

  

字符串不允许附加。您在String上调用的每个方法都会创建一个新对象并将其返回。这是因为String是不可变的 - 它不能改变它的内部状态。