在java中存储10,000条记录的最佳数据结构

Man*_*ena 0 java algorithm data-structures

我在面试时被问到这个问题.我认为这个问题过于通用,无法指定特定的数据结构.

但是,如果我们将问题通道化为以下标准,那么使用的最佳数据结构是什么:

  1. 如果插入速度应该最快?
  2. 如果要搜索特定数据最快?

Fra*_*fer 7

HashSet同时提供了O(1)的插入和O(1)的搜索,这是硬从理论角度到顶部.

实际上,对于大小为10.000的引用,虽然插入是O(n)并且搜索是O(log(n)),但排序ArrayList可能仍然优于大写HashSet.为什么?因为它将数据(至少是引用)存储在连续的内存范围中,因此可以利用硬件内存缓存.

big-O表示法的问题在于它完全忽略了单个操作所需的时间.对于渐近考虑和非常庞大的数据集来说这很好,但是对于10.000的大小,这可能会产生误导.

但是没试过.我打赌你的面试官也没有:).