「Listに特定の値が存在するかを高速に確認する」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
&bold(){List等、特定の値が存在するかを高速に確認する}
変化しない一覧を保持して存在有無をチェックするような場合、HashMap#containsKey()(HashSet#contains())を使う
&bold(){【例:定数として利用する場合】}
/** 名称 */
private static final HashSet names = new HashSet (
Arrays.asList("あああ", "いいい", "ううう", "えええ")
);
~中略~
/**
* 名称が存在したら true を返す。無ければ false
*/
private boolean contains(String val) {
return names.contains(val);
}
同様に、SQL等で名称のみを取得したリストやメモリ展開がされているリスト中に、特定の値が存在するかを確認する場合にも利用できる。
※上記の例と同様に [[java.util.HashSet>>http://java.sun.com/javase/ja/6/docs/ja/api/java/util/HashSet.html]] に格納し、[[contains()>>http://java.sun.com/javase/ja/6/docs/ja/api/java/util/HashSet.html#contains(java.lang.Object)]] メソッドで有無を確認する。
&bold(){【参考リンク】}
[[Javaのコスト>>http://www.ne.jp/asahi/hishidama/home/tech/java/cost.html#h_base_time]]
&bold(){List等に特定の値が存在するかを高速に確認する}
変化しない一覧を保持して存在有無をチェックするような場合、HashMap#containsKey()(HashSet#contains())を使う
&bold(){【例:定数として利用する場合】}
/** 名称 */
private static final HashSet names = new HashSet (
Arrays.asList("あああ", "いいい", "ううう", "えええ")
);
/**
* 名称が存在したら true を返す。無ければ false
* @param val
*/
private boolean containsName(String val) {
return names.contains(val);
}
-同様に、SQL等で名称のみを取得したリストやメモリ展開がされているリストの中に、特定の値が存在するかを確認する場合にも利用できる。
-上記の例と同様に [[java.util.HashSet>>http://java.sun.com/javase/ja/6/docs/ja/api/java/util/HashSet.html]] に格納し、[[contains()>>http://java.sun.com/javase/ja/6/docs/ja/api/java/util/HashSet.html#contains(java.lang.Object)]] メソッドで有無を確認する。
&bold(){【メモ】}
-1~2件程度であれば [[java.util.ArrayList#contains()>>http://java.sun.com/javase/ja/6/docs/ja/api/java/util/List.html#contains(java.lang.Object)]]でも性能的にも問題は無いが、件数が増えるにつれ高速化が効果を発揮する。
-forループ等で回して有ったらbreakして……等と書くよりはちょっとカッコイイ(かも)
-詳細は参考リンクの『contains()の速度』を参照。
&bold(){【参考リンク】}
-[[Javaのコスト>>http://www.ne.jp/asahi/hishidama/home/tech/java/cost.html#h_base_time]]
#comment