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;
}
내가하는 방법을 찾고 있어요 포함 같은 : 를 바늘이 건초 더미에 존재하는 경우, 또는 그것을 확인합니다 바늘은 건초 더미에서 문자열의 일부인 경우 . 그 경우 (위의 코드) haystack으로가는 파일과 바늘을주는 파일을 역으로 사용하면 결과는 같습니다. 하지만 나는 그걸 원하지 않아. 예를 들면 : 건초 더미 파일 (1) 바늘에서 오는 경우 자바 방법을 찾고 (코드 위)이 다할 것을 포함처럼
File 1:
i love beers
i like travelling
stackoverflow
beers
And File2 :
beers
i love stackoverflow
다음 파일 2에서 오는
, 나는 단어 맥주 파트 또는 유일한 건초 더미의 두 문자열과 동일하기 때문에 결과가이되고 싶어요. (beers ---> 나는 맥주와 맥주를 좋아한다) - 아무것도 stackoverflow를 좋아한다.) 하지만 haystack이 file2에서 왔고 바늘이 file1에서 왔을 때 나는 결과가 2가되기를 바란다. (맥주는 부분적으로 또는 동일하지 않다. 파일 2 아무것도, 나는 같은 여행을 좋아해요, stackoverflow 내가 stackoverflow -1- 사랑하고 마지막으로 맥주 맥주와 동일합니다 -2-) 그게 올바른 방법은 무엇입니까? 내가 전에 말했듯이 어떤 파일이 건초 더미이거나 바늘의 끈을 주더라도 동일한 결과를 제공합니다.추신 : 결과는 동일하지만 무작위라고 생각합니다.
어떻게 할 수 있습니까?
두 경우 모두 동일한 결과가 어떻게됩니까? 파일 1이 haystack이면 결과에 한 행이 있고, 파일 2가 haystack이면 결과에 두 행이 있습니다. –
이 숙제가 있습니까? 그렇지 않다면, 유스 케이스 란 무엇입니까? –
'포함'기능에 '주변'코드가있는 것 같습니다. 결과는 당신이 원하는 것을하지 않습니다. '포함'기능이 원하는 것을 수행하지 못하거나 그 코드가 잘못되었는지 파악해야합니다. 이를 수행하는 좋은 방법은 'contains'함수에 대한 단위 테스트를 작성하는 것입니다. –