don*_*ton 12 java arrays performance hashset data-structures
我有一组保证不同的对象(特别是由唯一的整数ID索引).我也确切地知道它们中有多少(并且数字不会改变),并且想知道Array是否比HashSet具有显着的性能优势来存储/检索所述元素.
在纸面上,Array保证了恒定的时间插入(因为我提前知道了大小)和检索,但是HashSet的代码看起来更清晰并且增加了一些灵活性,所以我想知道我是否在使用它时失去任何性能至少在理论上.
JNL*_*JNL 21
取决于您的数据;
HashSet为您提供O(1)contains()方法,但不保留顺序.
ArrayListcontains()O(n)但您可以控制条目的顺序.
Array如果你需要在两者之间插入任何东西,最坏的情况可能是O(n),因为你必须向下移动数据并为插入腾出空间.在Set,你可以直接使用SortedSet which too has O(n) too but with flexible operations.
我相信Set更灵活.