在hashset或treeset中查找单词?

时间:2010-01-11 02:07:12

标签: java

我在文件中管道并将其存储到树集中。我想要算上独特的词...... 我把我不想要的单词放在一个hashset中。 “a”,“the”,“and”

我想在将文件放入之前检查文件是否包含这些文字 树集.. 我知道我需要某种if(word == find)?我只是不知道该怎么做..

抱歉格式化。粘贴后很难弄清楚。

这就是我的......

import java.util.Scanner;
import java.util.ArrayList;
import java.util.TreeSet;
import java.util.Iterator;
import java.util.HashSet;

public class Project1
{
    public static void main(String[] args)
    {
        Scanner     sc = new Scanner(System.in);    
        String      word;
        String grab;
        int count = 0;
        int count2 =0;
        int count3 =0;
        int count4 =0;
        int number;
        TreeSet<String> a = new TreeSet<String>();
        HashSet<String> find = new HashSet<String>();

        System.out.println("Project 1\n");
        find.add("a");
        find.add("and");
        find.add("the");

        while (sc.hasNext()) 
        {   
            word = sc.next();
            word = word.toLowerCase();
            for(int i = 0; i < word.length(); i++ )
            {
                if(Character.isDigit(word.charAt(i))) 
                {
                    count3++;  
                }
            }
            //if( a.contains("a") )
            //|| word.matches("and") || word.matches("the")|| word.contains("$"))
            //{
            //   count2++;
            // }
            a.add(word);
            if (word.equals("---"))
            {
                break;
            }
        }

        System.out.println("a size");
        System.out.println(a.size());
        // count = count2 - count;
        System.out.println("unique words");
        System.out.println(a.size() -  count2 - count3);
        System.out.println("\nbye...");
    }
}

3 个答案:

答案 0 :(得分:3)

我看到你在整个项目中都使用了SO。

您可以采取以下措施:

if(!find.contains(word)){
    //addTheWord
}

答案 1 :(得分:1)

这与你的问题有些相关,但要学习code to the interface永远不会太早。在您的示例中,

TreeSet<String> a = new TreeSet<String>();
HashSet<String> find = new HashSet<String>();

可能会更好

Set<String> uniqueWords = new TreeSet<String>();
Set<String> trivialWords = new HashSet<String>();

使用接口类型将重点放在两个集合的Set功能上。随着程序的发展,它还允许您在以后轻松选择不同的实现。描述性名称也是一个好习惯。

答案 2 :(得分:0)

要查找元素: HashSet:using contains()需要O(c) - 常量时间 TreeSet:using contains()需要O(log n) - log n&gt;&gt; c(取决于)

如果经常需要查找元素的自然顺序,请使用TreeSet。否则,使用HashSet。