常量集合Contains方法性能優(yōu)化

出發(fā)點(diǎn)是:即使一個(gè)很小,耗時(shí)很短的方法,當(dāng)執(zhí)行次數(shù)夠多的時(shí)候帶來的性能問題也不可小視。

HashMap.containsKey和HashSet.contains優(yōu)于List.contains.

    private static List<String> TestList = new ArrayList<>();
    private static Map<String,Boolean> TestMap = new HashMap<>();
    private static Set<String> TestSet= new HashSet<>();
    private static int TestTimes = 1000*1000*1000;
    
    public static void main(String[] args) {
        init();
//      System.err.print("List");
//      Test(TestList);
//      System.err.print("HashMap");
//      Test(TestMap.keySet());
        System.err.print("HashSet");
        Test(TestSet);
    }
    
    private static void Test(Collection<String> collect)
    {
        int count = 0;
        long time1 = System.currentTimeMillis();
        for (int i = 0; i < TestTimes; i++) {
            if(collect.contains("12"))
                count++;
        }
        long time2 = System.currentTimeMillis();
        System.err.println(" cost:" + (time2 - time1));
    }
    
    private static void init()
    {
        String a = "1";
        String b = "2";
        String c = "3";
        TestList.add(a);
        TestList.add(b);
        TestList.add(c);
        TestMap.put(a, true);
        TestMap.put(b, true);
        TestMap.put(c, true);
        TestSet.add(a);
        TestSet.add(b);
        TestSet.add(c);
    }

結(jié)果:

HashSet cost:1286
HashMap cost:1318
List cost:3948
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容