Java字符串比较

jac*_*els 2 java string comparison

我正在比较两个大文本文件中的子串.非常简单,标记为两个令牌容器,与2 for循环进行比较.表现是灾难性的!有人有建议或想法如何改善表现吗?

for (int s = 0; s < txtA.TokenContainer.size(); s++) {
    String strTxtA = txtA.getSubStr(s);
    strLengthA = txtA.getNumToken(s);

    if (strLengthA >= dp.getMinStrLength()) {
        int tokenFileB = 1;

        for (int t = 0; t < txtB.TokenContainer.size(); t++) {
            String strTxtB = txtB.getSubStr(t);
            strLengthB = txtB.getNumToken(t);

            if (strTxtA.equalsIgnoreCase(strTxtB)) {
                try {
                    subStrTemp = new SubStrTemp(
                        txtA.ID, txtB.ID, tokenFileA, tokenFileB,
                        (tokenFileA + strLengthA - 1), 
                        (tokenFileB + strLengthB - 1));

                    if (subStrContainer.contains(subStrTemp) == false) {
                        subStrContainer.addElement(subStrTemp);
                    }
                } catch (Exception ex) {
                    logger.error("error");
                }
            }
            tokenFileB += strLengthB;
        }
        tokenFileA += strLengthA;
    }
}
Run Code Online (Sandbox Code Playgroud)

一般来说我的代码读取与Java Tokonizer两个大串入容器A和B.然后试图比较这些两个字符串现有存储到一个Vector Substrgs的substrings.Possision.但是性能很糟糕,也不知道如何用HashMap解决它.

Col*_*ert 7

你的主要问题是你通过txtA中的每个标记的所有txtB.

您应该在txtA(例如在HashMap中)存储令牌信息,然后在第二个循环(但不是嵌套循环)中存储信息,将字符串与Map中的现有字符串进行比较.


在同一主题上: