处理大量数据时HashSet比ArrayList有显著性能提高

package testLocal;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;

public class TestHashSet {

    private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");

    private static final int LOOP_COUNT = 100000;

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ
        HashSet<Integer> set = new HashSet<Integer>();
        ArrayList<Integer> list = new ArrayList<Integer>();

        for (int i = 0; i < LOOP_COUNT; i++) {
            list.add(i);
        }

        log("ArrayList start");
        for (int iList : list) {
            if (list.contains(iList)) {
                // Nothing is done.
            }
        }
        log("ArrayList end");

        for (int i = 0; i < LOOP_COUNT; i++) {
            set.add(i);
        }
        log("HashSet start");
        for (int iSet : set) {
            if (set.contains(iSet)) {
                // Nothing is done.
            }
        }
        log("HashSet end");
    }

    public static void log(final String str) {
        System.out.println(sdf.format(new Date().getTime()) + " " + str);
    }

}

 结果:

2016/03/18 13:35:52.492 ArrayList start
2016/03/18 13:36:14.634 ArrayList end
2016/03/18 13:36:14.703 HashSet start
2016/03/18 13:36:14.710 HashSet end

很显然HashSet比ArrayList用的时间少的多

猜你喜欢

转载自ahuzl007.iteye.com/blog/2284544