これは(いつものように)依存します。データセットの大きさは? 基本的なアプローチをテストして、時間がかかりすぎることがわかりましたか? たとえば、単純な LinkedLists は、削除に関しては (ArrayList と比較して) より効率的です。どのような方法で高速に検索できるデータ構造を実現したいですか? インデックスで?鍵で?高速であるために何が必要ですか? 実際のフィルタリングですか、それとも完了した後ですか?
単純なケースでもこれを行う複数の方法。各列のフィールドを持つ 1 つのオブジェクトにマージするのはどうでしょうか。
class Data {
String title;
String desc;
String price;
String usage;
}
その後:
LinkedList<Data> allData = ...;
for (Iterator iter=allData.iterator();iter.hasNext();) {
Data data = iter.next();
if ("NONE".equals(data.usage)) { //see note about using something else here
iter.remove();
}
}
//allData is now cleaned of any entries with USAGE of NONE
通常は ArrayList を使用するよりも速く、複数のリストを使用するよりも確実に高速です。
たとえば、データ モデリングのニーズに応じて、別のクラスで使用したい場合があります。
アルゴリズムに関係なく、さらなるパフォーマンスを得るには (これは重要な部分なので、楽しみのためだけに、常に測定してください!)、次の点を考慮してください。
- より効率的な比較のためにorを作成
usage
するか、文字列定数を作成する必要がないので、代わりに使用できますenum
int
equals()
usage == NONE