【发布时间】:2013-11-30 12:53:39
【问题描述】:
我试图了解从 Java 中的集合(如 ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap 等)访问元素时哪个更快。
从这个问题:Suitable java collection for fast get and fast removal,我知道 ArrayList 需要 O(1) 和 TreeMap 作为 O(log n)
其中:Map/ArrayList: which one is faster to search for an element 显示 ArryList 为 O(n),HashMap 为 O(1),TreeMap 为 O(log n)
其中:Why is it faster to process a sorted array than an unsorted array? 表示排序数组比未排序数组快。由于 TreeMap 中的元素是排序的,那么我可以假设所有排序的集合都比未排序的集合更快吗?
请帮助我了解从列表、集合、映射等实现的 java 集合中访问元素时使用哪个更快。
【问题讨论】:
-
每个集合的 javadoc 解释了集合中每个操作的复杂性。阅读它。
-
你可以假设任何你想要的,但这并不代表它是真的。仅仅因为 a 已排序的 array 比 此特定实例 中未排序的数组更快,并不意味着 all 已排序 集合比所有使用模式中的所有未排序集合都要快。
-
如果有一个数据结构总是比其他所有数据结构都好,Java API 将只实现那个数据结构。它提供了多种数据结构,因为不同的数据结构针对不同的目的进行了优化。
-
如果多个集合满足您的功能要求,并且访问性能很重要,请为您的程序安排每个适当的集合。
标签: java performance collections