2017-02-27 48 views
0

我正在開發一種搜索算法。其中我們有一個學生對象的ArrayList。我們必須從ArrayList中搜索學生。學生班的屬性是姓名,城市,國家和電話號碼。搜索應該起作用,如果我們輸入姓名,城市,國家或號碼,我們應該得到與搜索匹配的學生對象列表。 soppose,如果我們在搜索中鍵入「john」,那麼我們應該得到名稱爲john的學生對象列表。如果搜索查詢有多個單詞(如「約翰巴西」),那麼我們應該得到名稱爲約翰和國家的所有學生對象的列表是巴西。我沒有得到正確的輸出,在列表中,我得到了名稱爲john的所有對象以及該國爲巴西的所有對象。獲取(名稱||國家),但我需要(名稱& &國家)。任何幫助將不勝感激。提前致謝。使用多詞搜索鍵搜索存儲在arraylist中的對象

的代碼如下:

public Class Student { 
    private String first_name; 
    private String last_name; 
    private String city; 
    private String country; 
    private int phone_number; 
} 

public ArrayList<Student> searchMethod() { 

    ArrayList<Student> initial_result_list= new ArrayList<Student>; 

    for (Student student : student_list) { 
     for (String search : array_of_search_words) { 
      if((null!=student.getName() && student.getName().contains(search)) 
      || (null!=student.getCity() && student.getCity().contains(search)) 
      || (null!=student.getCountry() && student.getCountry().contains(search)) 
      || (null!=student.getCity() && student.getCity().contains(search)) 
      || (null!=student.getPhone_number() && student.getPhone_number().contains(search))) { 

       if(!initial_result_list.contains(student)) { 
        initial_result_list.add(student); 
       } 
      } 
     } 
    } 
    return initial_result_list; 
} 

回答

0

你必須確保在array_of_search_words每個詞語已被一些Class Student的屬性相匹配。

對於這種改變你的邏輯:

for (Student student : student_list) { 
    bool matched = false; 
    for (String search : array_of_search_words) { 
     if((null!=student.getName() && student.getName().contains(search)) 
     || (null!=student.getCity() && student.getCity().contains(search)) 
     || (null!=student.getCountry() && student.getCountry().contains(search)) 
     || (null!=student.getCity() && student.getCity().contains(search)) 
     || (null!=student.getPhone_number() && student.getPhone_number().contains(search))) {  
     matched = true;   
     } 
     else {matched = false;break;} 

    } 
    if(!initial_result_list.contains(student) && matched) 
       initial_result_list.add(student); 
} 
+0

非常感謝sumeet ..你的方法奏效! – Dipanshu