static boolean contains(Iterable<String> haystack, String needle) {
for (String s : haystack) {
if (s.contains(needle)) {
return true;
}
}
return false;
}
static void containsAll() throws IOException {
List<String> words = loadLines("opacial.txt");
List<String> tocheck = loadLines("queries0.txt");
System.out.println(words.size());
System.out.println(tocheck.size());
int index2 = 0;
for (String s : tocheck) {
if (contains(words, s)) {
index2++;
//return false;
}
}
System.out.println(index2);
//return true;
}
我正在寻找一种类似 contains (上面的代码)的方法来执行此操作:它将检查干草堆中是否存在针,或者针是否是干草堆中字符串的一部分。在那种情况下(上面的代码),如果我反转去干草堆的文件和给出针的文件,结果是一样的。但我不想要那个。例如:
File 1:
i love beers
i like travelling
stackoverflow
beers
And File2 :
beers
i love stackoverflow
那么如果 haystack 来自文件 1,needle 来自文件 2,我希望结果为 2,因为 beers 这个词是部分或相同的,只有两个 haystack 字符串。(啤酒--->我喜欢啤酒和啤酒)-我喜欢stackoverflow没有任何反应)但是当haystack来自file2而needle来自file1时,我希望结果为2。(我喜欢啤酒与文件2的任何内容,我都喜欢旅行,stackoverflow是我喜欢stackoverflow的一部分-1-最后啤酒与啤酒相同-2-)正确的方法是什么?正如我之前所说,无论什么文件是干草堆或给出针的字符串,包含给我相同的结果。
PS在我的例子中结果是一样的,但我认为这是随机的。
我怎样才能做到这一点?