2

アプリケーションの動的な動作中に大量の値のペアが必要になった場合、それらを格納するための最良の方法は何ですか?メモリ内(例:LinkedHashMap)またはSQLite DB?私は4000行以上のpersonIDとpersonNameを持っており、EditTextとSpinnerが必要です。EditTextに適切なpersonIDを入力すると、スピナーは正しいpersonNameにジャンプするはずですが、スピナーにはすべてのpersonNameも含まれているはずです。

単純な配列は64kを超えることはできないため、現在、次の方法で「メモリ内」ソリューションを実装しています。もちろん、コードは生成されました。XMLで配列を定義しようとしましたが、同じ制限があります。

public enum CompPeople {
    INSTANCE;

    public LinkedHashMap<Short, String> peopleIDs = new LinkedHashMap<Short, String>();

    public void initialize() {
        peopleIDs = new LinkedHashMap<Short, String>();
        setPeople1();
        setPeople2();
        setPeople3();
        setPeople4();
    }

    public void setPeople1() {
        peopleIDs.put(new Short((short) 1011), "John Doe");
        peopleIDs.put(new Short((short) 1012), "Jack Knight");
        peopleIDs.put(new Short((short) 1013), "Sue Doe");
        ...
    }

    public void setPeople2() {
        ...
    }

    public void setPeople3() {
        ...
    }

    public void setPeople4() {
        ...
    }
}

SQLiteの方法の方が優れている場合、アプリケーションの最初の実行時にデータベースを初期化するためのより良い解決策は、ここで説明されているものよりもありますか?: http: //www.reigndesign.com/blog/using-your-own-sqlite- database-in-android-applications /

前もって感謝します!

4

1 に答える 1

3

考慮すべきいくつかのポイント:

  1. データベース構造とメモリ内構造のどちらを使用するかを決定する際の最初の関心事は永続性の要件である必要があります。アプリケーションの終了後にデータを残す必要がある場合は、データベースまたはフラットファイルのいずれかの永続ストレージを使用する必要があります

  2. それがどのように行われたとしても、データベース内のオブジェクトの永続化は遅くなり、おそらくプログラミングがより面倒になります。オブジェクトをメモリに快適に収めることができれば、データベースを使用することはさらに複雑になる必要はありません。

  3. 4000行は一般にそれほど大きくはありません、たとえばblobを格納するために行サイズが十分に大きい場合は、組み込みデバイスのコンテキストである可能性があります。各行が占めるスペースはどれくらいになると思いますか?3〜4 MBについて話している場合は、メモリ内の構造を使用する方がよいでしょ...

于 2012-12-30T08:49:05.380 に答える