容器当中接口的层次图如下:
容器当中接口的特点如下:
.Collection接口
Collection 表示一组对象,他是集中收集的意思,就是把一组数据收集起来,Collection接口的两个子接口Set,List:
Set中的数据没有顺序,不可以重复。
List中的数据有顺序,可以重复。
Collection接口中定义的方法:
List接口:
有序的Collection,容许存在重复的元素,常用的实现类ArrayList和LinkedList。
List中实现的常用方法:
void add(Object element);//添加元素
void add(int index,Object element);//在索引index处添加元素
Object get(int index);//获取索引index处的值
Object set(int index,Object element);//修改某一位置的元素。
Object remove(int index);移除某一位置的元素。
List实现类特点
ArrayList:底层用数组实现的List,特点是:查询效率高 ,增删效率低(因为某处增加和删除元素时,会使该处后面的元素 位置后推或前移),线程不安全。
LinkedList:底层是双向链表实现的List,特点是:查询效率低,增删效率高,线程不安全。
Vector:底层用数组实现的List,特点:线程安全.
Map接口:
- Map用于保存具有”映射关系”(key-value)的数据,Map的key不允许重复。
- Map接口常见的实现类:Hashtable,HashMap,TreeMap
- Hashtable: 内部存储的键值对是无序的是按照哈希算法进行排序,与HashMap最大的区别就是线程安全.键或者值不能为null,为null就会抛出空指针异常
- HashMap(最常用): 内部存储的键值对是无序的是按照哈希算法进行排序,与Hashtable最大的区别就是非线程安全的,键或值可以为null。
- TreeMap: 基于红黑树(red-black tree)数据结构实现, 按 key 排序,默认的排序方式是升序.
Set接口:
- 没有顺序,不能包含重复元素
- Set判断两个对象相同不是使用”==”运算符,而是根据equals方法。
- Set的实现类有HashSet和TreeSet;
- HashSet: 采用哈希算法实现的。它不保证 set元素的迭代顺序.HashSet的底层是用HashMap实现的(元素保存在HashMap的键值对(key-value)中的key中,因为key不可重复),因此查询效率较高,由于采用hashCode算法直接确定元素的内存地址,增删效率也挺高的。
- TreeSet: TreeSet使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序.