Java で ArrayList 内検索ってめっちゃ遅いので HashSet 使ったらめっちゃ速かった

ArrayList 型の変数内に数千の要素が入ってて。このリストについて 500万回近く ArrayList.contains(string) やったらめっちゃ時間かかってビビった。

気軽に実行ってやったら僕の5年前のPCでは 7分とか待たされた。ハングしたのかな?もしくは無限ループかな?って心配になったけど念のため放置しておいたらようやく処理が終わった。

リスト内の順序はどうでもよくてとにかく検索できればいいから ArrayList の代わりに HashSet 使って HashSet.contains(string) としたら同じ内容の処理が 0.7秒で終わって逆に心配になった。えっ?処理した?

こんなに違うのか!