Java集合类详解

来源:互联网 发布:常州seo服务 编辑:程序博客网 时间:2024/06/15 17:39

一、集合与数组

数组:只能存放基本数据类型,长度固定,不适合在数据未定的情况下使用
集合:存放对象,长度可变,功能强大


二、集合类

JDK 中  主要的集合类分为两种 :Collection 和  Map

集合类框架图如下:



主要分为  collection和map两大类

Collection 

collection接口是集合类中的一种基类,jdk中并没有它的实现类,而是set,list,queue接口继承他然后其他的类实现



  Set 接口:它存放的数据 无序不重复,其中的元素不按顺序列,只是集中在一起

  List接口: 它存放的数据 有序可重复,与索引有关,每个元与之对应的索引(下标),所以查询速度快,删除,插入时会伴随着数据的移动,故效率低

  Queue接口:这个接口在工作中运用的很少,表示队列,是一种特殊的线性表,只能在前端删除 ,末端加入,像排队样不能插队;又称为先进先出线性表

  

  ArrayList,Vector, LinkedList区别:

  相同点:

   ArrayList,Vector,LinkedList  都是以数组存储方式存储,每个元素都有对应的下标

  不同点:

  ArrayList:线程异步,所以线程不安全,里面的数据查询效率高,删除插入效率慢

  Vector:线程同步,所以线程安全,里面的数据查询效率高,删除插入效率慢,Vector的增长率是当前集合长度的100%,ArrayList增长率是当前集合的50%,当带数据量大时

                 vector有优势

 LinkedList:LinkedList实现了List接口和Queue接口,是用双向链表的形式存储数据的,遍历时需要前后双向,所以插叙比较慢,删除插入时,只需记录前后项即可,效率高


HashSet,LinkedHashSet,TreeSet的区别:

HashSet:它存放的数据 有序可重复

LinkedHashSet:按顺序插入排序,速度慢,与HashSet的区别是里面加入了双向链表

TreeSet

Map