获取列表中多个值的值?

时间:2014-02-28 17:29:57

标签: java list

在没有减慢运行时间的情况下,在大量单词中获取多次出现的值的最佳方法是什么?我的文件包含 1xx,xxx字,我将它们放入链接列表中。现在,我想只从该列表中获得多次出现的字样。

例如,如果列表包含:

....This is is is just a test test....

我想获得istest并使用迭代器将它们放入另一个列表中。

我不知道我的代码是否正确,我认为这不是解决此问题的最佳解决方案。

for(int i = 0; i < word.size(); i++) {
   Word s = word.get(i);
   Word s1 = word.get(i+1);
   if(s.equals(s1)) {
      newWord.add(s);
   }
}

3 个答案:

答案 0 :(得分:1)

将它们全部放入HashSet而不是列表,并检查add()方法的返回值。

HashSet<Word> wordSet = new HashSet<>();
for(int i = 0; i < word.size(); i++) {
    if(!wordSet.add(word.get(i)){
         //Found duplicate
    } 
}

请注意,您也可以在/而不是创建单词列表中执行此操作。

答案 1 :(得分:1)

使用单词as key构建hashmap并将其计为值。

for(each word in list)
{
    count = 1;
    if(map.contains(word))
    {
        count = map.get(word);
    }
    else 
        count = 1;
    map.put(word,count);
}

然后遍历hashmap并检查值是否为1,并将该词添加到列表中。

答案 2 :(得分:0)

如果您可以对列表进行排序,则可以快速轻松地查找重复项。