Performance and Memory allocation comparison between List and Set

后端 未结 6 1269
执笔经年
执笔经年 2020-12-02 14:00

I want to know the comparison between List and Set in terms of performance,memory allocation and usability.

If i don\'t have any requirement of keeping the uniquenes

6条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-02 14:34

    If you will compare, searching between List and Set, Set will be better because of the underline Hashing algorithm.

    In the case of a list, in worst case scenario, contains will search till the end. In case of Set, because of hashing and bucket, it will search only subset.

    Sample use case: Add 1 to 100_000 integer to ArrayList and HashSet. Search each integer in ArrayList and HashSet.

    Set will take 9 milliseconds where as List will take 16232 seconds.

    private static void compareSetvsList(){
        List list = new ArrayList<>() ;
        Set set = new HashSet<>() ;
    
        System.out.println("Setting values in list and set .... ");
        int counter = 100_000  ;
    
        for(int i =0 ; i< counter ; i++){            
            list.add(i);
            set.add(i);
        }
    
        System.out.println("Checking time .... ");
        long l1 = System.currentTimeMillis();
        for(int i =0 ; i< counter ; i++) list.contains(i);
    
        long l2 = System.currentTimeMillis();
        System.out.println(" time taken for list : "+ (l2-l1));
    
        for(int i =0 ; i< counter ; i++)set.contains(i);
    
        long l3 = System.currentTimeMillis();
        System.out.println(" time taken for set : "+ (l3-l2));
    
        //      for 10000   time taken for list : 123        time taken for set : 4
        //      for 100000  time taken for list : 16232          time taken for set : 9
        //      for 1000000 time taken for list : hung       time taken for set : 26
    
    }
    

提交回复
热议问题