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
次に、干し草の山がファイル1からのもので、針がファイル2からのものである場合、ビールという単語が一部であるため、結果を2にします。または、干し草の山の2つの文字列だけで同じです。(ビール--->私はビールとビールが大好きです)-stackoverflowが大好きですが何も起こりません)しかし、干し草の山がfile2から来て、針がfile1から来るとき、私は結果を2にしたいです(私はビールが一部または同じではありませんファイル2のいずれか、私は同じように旅行するのが好きです、stackoverflowは私がstackoverflow -1-を愛する一部であり、最後にビールはビールと同じです-2-)そのための正しい方法は何ですか?前に言ったように、containsは、どのファイルが干し草の山であるか、針の文字列を与えるかに関係なく、同じ結果をもたらします。
私の例のPSの結果は同じですが、それはランダムだと思います。
どうやってやるの?