2017-02-27 8 views
0

検索アルゴリズムを開発中です。生徒オブジェクトのArrayListがあります。そして、ArrayListから学生を検索しなければなりません。学生クラスの属性は、名前、都市名、国名、電話番号です。名前、都市、国または番号を入力すると、検索に一致する生徒オブジェクトのリストを取得するように検索が機能するはずです。 soppose、 "john"と検索すると、名前がjohnの生徒のリストが得られるはずです。検索クエリに複数の単語(「john brazil」など)がある場合は、名前がjohn、国がbrazilのすべての生徒オブジェクトのリストを取得する必要があります。私は適切な出力を得ていない、リストで私は名前がジョンとブラジルであるすべてのオブジェクトであるすべてのオブジェクトを取得しています。取得(名前||国)が必要です(名前& &国)。どんな助けもありがとう。前もって感謝します。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

関連する問題