0

データベース ビューから 1 つの行を表すデータのリスト (ArrayList) を取得しています。通常、各列には単一の値がありますが、一部の列には次のように区切られた文字列値があります。

CompanyID  CompanyName   ContactIDs  Contacts
49         Test Company  5;9         Alice;Bob

現在、最初の値のサブリストを取得し、残りをString.split()で解析していますが、特に一度に数百のこれらのオブジェクトをロードするときのパフォーマンスが心配です。これが私の方法です:

public void loadFromData(List data) {
    getCompany().load(data.subList(0, 2)); 
    //Pulls 49 and Test Company and loads it into a Company object

    getContacts().clear();
    //getContacts() retrieves an ArrayList of Contact objects
    String[] contactIds = ((String)data.get(2)).split(";");
    String[] contactNames = ((String)data.get(3)).split(";");

    List data = new ArrayList();
    for (int i = 0; i < companyCategoryIds.length; i++) {
        data.clear();
        data.add(contactIds[i]);
        data.add(getCompany().getCompanyId());
        data.add(contactNames [i]);
        getContacts().add(new Contact().load(data));
    }    
}

これを行うためのより良い方法はありますか?または、これはおそらく、与えられたリストを分割する最も効率的な方法ですか?

リスト自体を変更できないと仮定すると、「;」による結合 私がそれを取得する前に、データベースでサーバー側で行われます。

前もって感謝します!

4

1 に答える 1

1

は最も簡単String.split()な方法ですが、正規表現を使用するため、頻繁に使用すると少し遅くなる可能性があります。ただし、データベースへのアクセスを行っているため (これは非常に低速です)、まだ心配する必要はありません。String.split() を取り除こうとする前に、プロファイラーを実行して実際に問題があるかどうかを確認してください。最適化は、何かが遅いと感じたからといって行うものではありません。

于 2013-10-17T20:16:21.240 に答える