ArrayList 和 HashSet retainAll 交集问题

问题描述

两个大约10W左右量的List使用 retainAll()。耗费了40S。

找出这个问题都是泪,当时看着这是个JVM内存间的操作想着10W数据量也不是特别多就一直没注意,直到实在找不出问题,然后所有线索又指向这块代码。我就来试了试。
其实原理很简单,就是数组和散列表两种数据结构在处理数据上的事情

ArrayList 的 retainAll实现

看下实现一眼明白数据量10W 就来次 10W*10W

HashSet 的 retainAll实现

HashSet本身没有重写 retainAll 使用的是基类的因为是散列表结构就来了10W次

两种数据结构的在比较交集上的巨大差距

原文地址:https://www.cnblogs.com/linma/p/13433338.html