大型对象上的字符串替换和arraylist性能

时间:2016-10-30 07:33:34

标签: android string arraylist replace

我正在寻找建议和优化如何处理字符串替换(需要多次调用)并将这些对象添加到大型对象的arraylist(可包含1000多个字符串) /字符串。

我像这样处理这些字符串:

1.Replace function(多次调用)

2.正在提取步骤1的输出中的所有 href链接,并使用2个arraylists进行比较。

我的问题是有没有办法优化/更改这些功能,以便它们也适用于大字符串? 当我在包含 1000+ href链接的大字符串上使用这些函数时,arraylist(desti_Urls)未填充/为空。

然而,它们在普通/小弦乐上完美运行。

感谢您的建议和反馈。

编辑:最终目标是将最终的arraylist(desti_Urls)与 CustomTextView 中的网址进行比较,如果匹配则设置链接的文本颜色CTV为绿色。 PS:String(输出)设置为CustomTextView。

替换功能:

    public static void processSubstring(String inPut) {
            String temP;
            if (inPut.contains("Download Instructions")){
                temP = inPut.substring(inPut.indexOf("Download Instructions:")+31, inPut.length());
                outPut = temP.replace("'", "\"").replace("&#58;", ":").replace("&#46;", ".").replace("</a>", "<br/>" + "</a>");
            }
            else {
                temP = inPut.substring(inPut.indexOf("<a href="), inPut.length());
                outPut = temP.replace("'", "\"").replace("&#58;", ":").replace("&#46;", ".").replace("</a>", "<br/>" + "</a>");
            }
        }

获取所有href网址链接并进行比较:

public static void parseAllLinks(String content) {
        List<String> host_Urls = new ArrayList<>();
        List<String> desti_Urls = new ArrayList<>();
        List<String> totalUrls = new ArrayList<>();

        desti_Urls.clear();
        totalUrls.clear();
        host_Urls.clear();

        host_Urls.add("a.net");
        host_Urls.add("b.com");
        host_Urls.add("c.to");
        host_Urls.add("d.com");
        host_Urls.add("e.com");
        host_Urls.add("f.to");
        host_Urls.add("g.net");
        host_Urls.add("h.to");
        host_Urls.add("i.net");
        host_Urls.add("j.it");
        host_Urls.add("k.com");
        host_Urls.add("l.com");
        host_Urls.add("m.com");
        host_Urls.add("n.com");
        host_Urls.add("o.com");
        host_Urls.add("p.com");
        host_Urls.add("q.com");
        host_Urls.add("r.net");
        host_Urls.add("s.com");
        host_Urls.add("t.com");
        host_Urls.add("u.to");
        host_Urls.add("v.com");
        host_Urls.add("w.com");
        host_Urls.add("x.net");

        //Extract all url links from output string.
        Document doc = Jsoup.parse(outPut);
        Elements links = doc.select("a[href]");
        for (Element link : links) {
            totalUrls.add(link.attr("abs:href"));

        }
        //Compare them with the host arraylist and add valid
        // host urls to new arraylist (desti_Urls).

        for (int i = 0; i < host_Urls.size(); i++) {
            for (int k = 0; k < totalUrls.size(); k++) {
                if (totalUrls.get(k).contains(host_Urls.get(i))) {
                    desti_Urls.add(totalUrls.get(k));
                }
            }
        }
        // However on a LARGE String (output),  desti_Urls is empty.
        System.out.println("HOST LINKS AVAILABLE " + desti_Urls.toString());
    }

0 个答案:

没有答案