0
아래의 배열 목록에서 문자열이 제대로 작동하는지 검색하려고합니다. 그러나 문제는 내가 찾고있는 문자열이 일부 텍스트 예제 "XXXXTESTXXXX"사이에 포함될 때입니다. 바이너리 검색은 지금까지 내가 찾지 못한 것 같습니다. 또한 "포함"방법을 시도했지만 어느 쪽도 작동하지 않았습니다. 내가 어디로 잘못 가고 있는지 모르겠다. 제발 제안 해주세요.자바 이진 검색 배열 목록
Array Content :[PIGEON, XXXBEARXXX , XXXCAT, XXXDOG, XXXELEPHANTXXX , XXXHORSEXXX , XXXLIONXXX , XXXMOUSEXXX , XXXOWLXXX , XXXPARROTXXX , XXXTIGERXXX ]
예 검색 문자열 : -
Search String = "BEAR"
코드
ArrayList File_F1_Array = new ArrayList();
// Read the lines of the Source file (File_1) in to Arraylist
try {
BufferedReader File_F1_Br = new BufferedReader (new FileReader(File_F1));
while ((File_F1_Line = File_F1_Br.readLine()) !=null) {
File_F1_Array.add(File_F1_Line);
}
File_F1_Br.close();
} catch (Exception e) {
e.printStackTrace();
}
// Sort the array list
Collections.sort(File_F1_Array);
// Search lines from Refernce file (File_2) in Arraylist
try {
BufferedReader File_F2_br = new BufferedReader (new FileReader(File_F2));
while ((File_F2_Line = File_F2_br.readLine()) !=null) {
int index = Collections.binarySearch(File_F1_Array, File_F2_Line);
boolean StringCheck = File_F1_Array.contains(File_F2_Line);
}
글쎄, 당신은 무엇을 기대 했습니까? 두 메소드 모두'.equals'를 사용하여 정확한 문자열 비교를합니다. –
나는 목록을 * trie * (* tree *와 혼동하지 말 것)로 변환하여 O에서 조회를 수행 할 수 있다고 생각한다. 로그 n) 시간 (* n * 단어의 수). –
하위 문자열을 찾는 데 이진 검색이 작동하지 않습니다. – user2357112