java集合框架

定义:在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和操作(算法)统称为Java集合框架。
java集合框架可分为两类:一类是值存储:其顶层接口是Collection,一类是键值对存储:其顶层接口是Map。
值存储:Collection下面还有两个子接口:分别是List和Set。其中List是有序(ArrayList和LinkedList都是按元素添加顺序排序)可重复的,Set(其实现类中HashSet是无序的,LinkedHashSet是按元素添加顺序排序,TreeSet是按照自然顺序排序)不重复。
List下面的具体实现类包括:ArrayList、LinkedList和Vector。
Vector底层是数组实现的。
ArrayList和LinkedList的区别:其中ArrayList底层是数组实现的,在进行元素的增删操作是涉及到内存的移动,效率低,在查询时,可根据元素下标查询,效率较高。而LinkedList底层是由循环双向链表来实现的,在进行元素增删操作时,效率较高,在查询时只能从头部或尾部开始查询,效率较低。
从安全性和效率上来说:ArrayList和LinkedList没有进行线程同步,Vector进行了线程同步,所以说前两者是线程不安全的,效率较高,而后者线程安全但是效率较低。

键值对存储:Map接口,其下有是个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap。
Map主要用于存储健值对,根据键得到值,因此不允许键重复,但允许值重复。

Hashmap 是一个 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力.

Hashtable 与HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。

LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历 的时候会比HashMap慢。

TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

posted @ 2019-05-30 22:24  向阳花开的季节  阅读(93)  评论(0编辑  收藏  举报