[HashSet vs ArrayList] contains 效能比较

不同介面不同人生

会使用到 contains 的场合,通常是为了找查是否有某个元素存在,但若是在不适当的时机使用不适当的资料结构可能会导致效能相差甚远,以下分别比较 10,000、100,000、1,000,000 笔元素之间的效能。

public class ContainsMethodComparison {    public static void main(String[] args) {        List<Integer> list = new ArrayList<>();        for (int i = 0; i < 请自行替换; i++) {            list.add(i);        }        System.out.println("Test ArrayList contains method");        System.out.println("==========================================");        long start = System.currentTimeMillis();        if (list.contains(list.size() - 1)) {            System.out.println("Done! List Size " + list.size());        } else {            System.out.println("Not Exist!");        }        long end = System.currentTimeMillis();        System.out.println("Total: " + (end - start) + "\n");                Set<Integer> set = new HashSet<>(list);        System.out.println("Test HashSet contains method");        System.out.println("==========================================");        start = System.currentTimeMillis();        if (set.contains(list.size() - 1)) {            System.out.println("Done! Map Size " + set.size());        } else {            System.out.println("Not Exist!");        }        end = System.currentTimeMillis();        System.out.println("Total: " + (end - start) + "\n");    }}

比较 10,000 笔资料

Test ArrayList contains method==========================================Done! List Size 10000Total: 14Test HashSet contains method==========================================Done! Map Size 10000Total: 0

比较 100,000 笔资料

Test ArrayList contains method==========================================Done! List Size 100000Total: 17Test HashSet contains method==========================================Done! Map Size 100000Total: 0

比较 1,000,000 笔资料

Test ArrayList contains method==========================================Done! List Size 1000000Total: 19Test HashSet contains method==========================================Done! Map Size 1000000Total: 1

结论

总之,在需要快速判断集合是否包含某个元素时,HashSet 通常比 ArrayList 更具优势,尤其是当元素数量较大时。然而,如果你需要保留元素的顺序或允许重複元素,那么 ArrayList 可能更适合你的需求。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章