数组:一种容器,可以装很多元素,元素跟下标绑定,下标范围(0到len-1)
通过下标访问元素。长度固定。
collection:一种容器,可以装很多元素,长度不固定(可以动态增加或减少)。
collection容器都有管理者-》Iterator--》怎么获取容器.Iterator()
通过管理者可以遍历容器元素。
list:一种容器,可以装很多元素,长度不固定(可以动态增加或减少)。
元素跟下标绑定,下标范围(0到len-1),通过下标访问元素。
元素可以重复。
list实现类
a)arrayList:底层是数组,线程不安全,对比linkedList读取设置元素效率高,插入删除效率底。
b)linkedList:底层是双向链表,对比arrayList读取设置元素效率低,插入删除效率高。
c)vector:底层是数组,线程安全
set:一种容器,可以装很多元素,长度不固定(可以动态增加或减少)。
元素不能重复,没有绑定下标。
set实现类
a)hashset:底层是hashMap,通常使用hashset效率比treeset高。
b)treeset:底层是treeMap,如果需要自动对添加元素做排序-使用。
map:一种容器,可以装很多键(类似于下标)值(类似于元素)对,通过键访问值。
键不能重复,值可以重复,长度不固定(可以动态增加或减少)。
map实现类
hashmap:底层是数组加单向链表,线程不安全,存储的键和值可以为null
hashtable:底层是数组加单向链表,线程安全,存储的键和值不可以为null
treemap:底层是红黑树,如果需要自动对添加键值对按照键做排序-使用。
Properties:继承了hashtable,新增了api,与Properties文件做交互
(读取文件数据,写数据文件)使用。
怎么选择?
1)需要的容器存储单个元素,长度固定,用于访问容器的数据--》数组
2)需要的容器存储单个元素,长度不固定,要求可以存储重复元素--》list
3)需要的容器存储单个元素,长度不固定,要求不可以存储重复元素--》set
3)需要的容器存储一对数据(键-值),长度不固定--》map