我迷失了,需要指导。我编写了我的代码来扫描book.txt,但是如何将input.txt中的单词与book.txt中的单词进行比较?
答案 0 :(得分:1)
这会工作我会想
Scanner scan = new Scanner("book.txt");
Set<String> list = new HashSet<String>();
String word = "";
while(scan.hasNextLine())
list.add(scan.nextLine());
scan.close();
scan = new Scanner("input.txt");
while(scan.hasNextLine())
if(!list.contains((word = scan.nextLine()))) //word from input.txt is not in book.txt
System.out.println(word); //print the word to the console
scan.close();
答案 1 :(得分:0)
如果您无法使用HashSet,请创建自己的hashFunction。
最常用的hashFunction是这样的:
public static int mod = 1000007;
private static Long hashFunction(String word) {
long hash = 5831;
for (int i = 0; i < word.length(); ++i) {
hash *= 33;
hash %= mod;
hash += word.charAt(i);
hash %= mod;
}
return hash;
}
hashFunction的基本思想是从它的单词创建一个哈希值,然后使用布尔值true填充该数组,表明它存在。
当您创建一个包含所有哈希值的整个hashTable时。然后只需为目标字创建一个哈希值,并检查它是否存在于hashTable中。