Androidアプリのデータの約30kのキー値ペアを持つドキュメントを解析する必要があります。これらのキー値を保存するための最良の(最も速い、または最も単純な)方法は何ですか?それはハッシュテーブルですか?、android sharedpreferences?またはandroidsqlite?
読んでくれてありがとう、そしてどんな提案もいただければ幸いです。^^
それらすべてを同時にメモリに入れたくない場合は、sqlliteを使用します(最速かどうかはわかりませんが、実行時のメモリ消費量を少なくとも削減します。これは、Androidが各プロセス/アプリで使用可能なメモリを制限するため、非常に重要な要素です) 。
を使用できますSharedPreferences
。Map to fileを介して書き込むこともできるserialization
ので、入力ファイルがHashMapにロードされると、次のようなことができます。
FileOutputStream fStream = openFileOutput("saved-map", Context.MODE_PRIVATE) ;
ObjectOutputStream oStream = new ObjectOutputStream(fStream);
oStream.writeObject(map);
oStream.flush();
oStream.close();
SQLLite
常に優れたオプションですが、上記の2つは高速で簡単に実装できます。
これらのストレージタイプの間には、いくつかの極端な違いがあります。そして、それはすべて、どちらを使用するかによって異なります。
SharedPreferences
ここではおそらく悪い呼び出しです。これらすべてのキーを管理し、設定ファイルでそれらを反復できないことは、ほとんど望ましくありません。
ハッシュテーブルはデータをメモリに保存するだけであり、Androidがアプリを終了するか、メモリを解放するたびに失われます。さらに、これは、保存しているデータの種類によっては、メモリに大きな負担がかかります。(int, int
地図はそれほど悪くないかもしれません。)
ほとんどの場合、これを行うための最良の方法は、バックグラウンドスレッドでSQLiteを使用することです。私が言ったように、それはあなたのユースケースに依存しますが、速度の低下または過度のメモリ使用なしに30kキーを管理することはできません。これは、今日のテクノロジーに対する制限にすぎません。