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;
}
我尋找一個方法類似包含(上面的代碼),將做到這一點: 如果在草堆中存在針,否則會檢查針在草垛一個字符串的一部分。 在這種情況下(上面的代碼),如果我將文件轉換成乾草堆,以及提供針的文件,結果是相同的。但我不想那樣。例如:爪哇 - 尋找一個方法類似包含
File 1:
i love beers
i like travelling
stackoverflow
beers
And File2 :
beers
i love stackoverflow
那麼如果大海撈針來自文件1和針來自file2的,我希望得到的結果是2,因爲這個詞是啤酒部分或同一只乾草堆的兩個字符串。 (啤酒--->我喜歡啤酒和啤酒) - 沒有什麼事情發生在我愛的stackoverflow) 但是當乾草堆來自file2並且針來自file1時,我想要結果是2.(我愛啤酒不是部分或相同的與任何文件2,我喜歡旅行相同,stackoverflow是我愛的一部分stackoverflow -1-和最後啤酒是與啤酒-2-) 什麼是正確的方法呢? 正如我之前所說的包含給我同樣的結果,無論什麼文件是乾草堆或給針的字符串。
PS在我的例子中結果是一樣的,但我認爲這是隨機的。
我該怎麼做?
結果在兩種情況下結果如何?如果文件1是乾草堆,則結果有一行,如果文件2是乾草堆,則結果有兩行。 –
這是功課嗎?如果不是,那麼用例是什麼? –
看起來你的'contains'函數有一些代碼。結果不會做你想要的。你需要弄清楚'contains'函數是不是做你想做的,或者它周圍的代碼是錯誤的。一個很好的方法是爲'contains'函數編寫單元測試。 –