集合框架结构图:
-
Collection(单列集合的根接口)
- List有序(存和取的顺序一致),有索引可以存储重复
- ArrayList数组实现
- LinkedList链表实现
- Vector数组实现
- Set无序(存和取得顺序不一致)不可以存储重复
- HashSet 哈希算法
- TreeSet 二叉树算法
- List有序(存和取的顺序一致),有索引可以存储重复
-
对于类ArrayList其底层数据结构为数组,但是数组的长度不是固定的吗,为什么ArrayList的长度却可变呢?
- ArrayList底层实现方式:当往里面存储数据的时候若长度不够,它会将数组里面的数据都复制到另外一个是其大小1.5倍的新数组中,然后接着往里面存数据不够了再复制....以此方式实现其长度可变.
- 正因为如此,集合在存数据的过程中会消耗更多的内存,所以集合与数组比起来在性能效率上会不如,因此,当确定存储数据的数量固定时最好用数组而不是集合.