java - 比较对列表以找到相似项

标签 java algorithm

Movie1{{'hello',5},{'foo',3}}
Movie2{{'hi',2},{'foo',2}}

在测试时,我正在测试 2 部电影,每部电影都有大约 20 个独特的单词,按单词和频率对分组

public ArrayList<Pair<String, Integer>> getWordsAndFrequency() {

        String[] keys = description.split(" ");
        String[] uniqueKeys;
        int count = 0;
        uniqueKeys = getUniqueKeys(keys);

        for (String key : uniqueKeys) {
            if (null == key) {
                break;
            }

            for (String s : keys) {
                if (key.equals(s)) {
                    count++;
                }
            }
            words.add(Pair.of(key, count));
            count = 0;
        }
        sortWords(words);

        return words;
    }

最佳答案

您的错误是您的 getWordsAndFrequency() 方法实际上向 words 添加了更多条目。所以每次你调用它时,单词列表都会变得越来越长。要解决此问题,您应该计算一次单词和频率并将这些 Pairs 添加到列表中,然后只需在 getWordsAndFrequency() 方法中返回列表而不是每次都计算它。

关于java - 比较对列表以找到相似项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29925329/

相关文章:

java - JUnit 5 中的 TestName 规则等效于什么?

java - 如何在 Java 中返回对象的字符串表示形式

algorithm - 斐波那契算法的递归方程

java - .jdbc4.MySQLIntegrityConstraintViolationException : Cannot add or update a child row: a foreign key constraint fails during signup and registration

java - Vaadin 7 : java. lang.IllegalStateException:推送不可用

java - 为什么我的算法返回 stackoverflow 异常?

arrays - MIPS 钻石分选

algorithm - 解释了使用 Mean Shift 进行图像分割

python - 这个mergesort实现的时间复杂度是O(nlogn)吗?

java - 默认参数值在 iReport 中有效,但在 JasperServer 中无效