2012-04-24 17 views
0

検索方法を設計しました。私の要求によると、ユーザーが顧客のレコードを検索したい場合は、顧客の氏名または名前を名前テキストフィールドに入力し、検索ボタンをクリックすることができます。ボタンクリック(入力して、検索する名前はリーです)java:最良の「検索方法」

enter image description here

enter image description here

以下は検索用のコードで前と後、次の2つのスクリーンショットは、イベントの例を示しています。それは正常に動作しているが、私はそれをより良くしたいですか?

private void search() 
     { 
      String studentName=CNameTextField.getText(); 
      String record=""; 
      int count=0; 

      for(int i=0; i<myList.size();i++) 
       { 
       String name=myList.get(i).getName(); 

       String [] splitName= name.split(" "); 

       if(studentName.equals(splitName[0]) || studentName.equals(splitName[1])) 
        { 
         count++; 
         record=record+"\n"+myList.get(i).toString(); 

        } 
       display.setText(""); 
       display.append(count + " result(s) found for "+ studentName); 
       display.append("\n "+ record); 
       } 


    } 
+0

もっと速いのですか?より良いスケーリング? – lynks

+1

http://codereview.stackexchange.com/で尋ねたいと思うかもしれませんが、あなたが作業しているデータセットの大きさはどれくらいですか?リスト内の数百のエントリだけであれば、直線的な線形検索はうまくいくでしょう(そして、率直に言って、もっとうまくいくかもしれません)。さらに多くの場合は、これらのオブジェクトを表すために使用するデータ構造についての質問があります。パフォーマンスやメモリに関する懸念がある場合は、プロフィールプロフィールプロフィールをご覧ください。 – birryree

+0

可能であれば、私はより良いロジックでそれを望みます。それは4つのレコードだけです。 – Ravi

答えて

0

は、だから、基本的にString項目のリストを持っている、とあなたは価値のためにそれらのすべてを検索していますか?

Stringではなく、DisplayAreaの各行にオブジェクトを作成することをお勧めします。たとえば、DisplayAreaの入力ファイルを読み込むときには、各行にsplit()を入力し、ID,nameroomなどのフィールドを持つタイプCustomerのオブジェクトを作成します。これは、とにかくより良いオブジェクト指向プログラミングです - String s don '実際には意味がありますが、Customerの意味があります。

これを行うと、リスト内のCustomerをすべてループバックして、name.equals(customer.getName());が検索するたびに分割する必要がなくなるかどうかを尋ねることができます。

関連する問題