您的位置:首页 > 编程语言 > Java开发

java 集合 List 学习

2016-06-14 17:21 302 查看
list 是collection 接口下面的一个子接口,List 接口下面有ArrayList,Vector,linkedList 实现类,和Queue接口,该接口下面PriorityQueue实现类和Dequeue接口,deque接口下面的实现类是ArrayDeque 和linkedList;

   1.List特点:

          (1) list集合是无序的,与set相比list可以根据索引来进行添加、删除、查找;

          (2) list集合判断对象是否相等,重写了equals 方法,来进行判断;

          (3) set的迭代iteretor list的迭代listiterator可以进行正向迭代和反向迭代

   2.ArrayList特点:

          (1)底层是基于封装的动态数组;

          (2)ArrayList底层初始化的数组默认是10但如果超过默认的值时候,数组就会动态为它分配空间;为了提高性能,也可初始化就为它赋值,这样就会减少动态分配空间;

          (3)ArrayList是非线程安全;

  3.statck特点:

          (1)statck是线程安全,性能相对较差

          (2)底层是基于封装的动态数组;

          (3)rrayList底层初始化的数组默认是10但如果超过默认的值时候,数组就会动态为它分配空间;为了提高性能,也可初始化就为它赋值,这样就会减少动态分配空间;

          (4)statck作为栈具有"后进先出"的特点;

          (5)statck类中有push,peek,pop peek方法获取栈内的对象但不会删除该对象,而pop与之相反

          (6)statck是vector下面的一个子类;

   4.Arrays 类里面包含一个asList(Object.....a),但是它返回回来并不是真正的List集合,但是这对象并不是ArrayList和statck的实例,而是这个内部类ArrayList的实例,所以不具备增加,删除该集合中的元素;

  5.Queue:

    Queue接口,队列先进先出,所以说,头部队列中存放时间最长的元素,尾部则存放时间最短的元素,该接口下面有一个实现类,PriorityQueue和子接口Dequeue,Dequeue下面的实现类ArrayDeque 

   方法:

       offer();添加元素到队列尾部;

       add():添加元素到队列尾部;

       peek():获取队列头部元素,但不删除该元素;

       poll():获取头部元素,但删除该元素;

  6.PriorityQueue:

      PriorityQueue是Queue接口下面的一个实现类,但是它并不是绝对的符合队列的标准,先进先出,它是根据插入数据并进行排序,而里面的方法peek,poll是获取队列中最小的元素,不能null元素;

      自然排序:实现compare接口,并重写了compareTo这个方法

      定制排序:传入comparator对象,并重写compare这个方法

 7.ArrayDeque:

      ArrayDeque是Dequeue实现类,Dequeue是Queue的一个子接口,Dequeue是一个双端队列,该实现类,既可以做队列和栈,底层机制和ArrayList类似,都是动态分配数组

8.linkedList:

  LinkedList是List接口的实现类,它具有索引一样进行删除,查询,添加集合里面数据,并且它有实现了,Dequeue具有双端队列的接口,既可以做栈,又可以做队列;

LinkeList和ArrayList、ArrayDeque来比较,ArrayList和ArrayDeque实现机制是动态数组,所以它们随机访问性能较好,而LinkList的实现机制是链表的形式,所以它的随机访问差,而它的迭代性能佳,插入,删除性能较好。虽然Vector实现机制也是数组,但是它是同步机制,所以导致更方面性能有所下降;

总结:

 
   ArryList和ArrayDeque实现机制是数组,它们的随机访问性能较好,因为数组内存是一块连续的内存空间,所以速度快;

 
   如果要经常的进行删除,和插入尽量用LinkedList因为链表进行删除,插入性能更加;

 
  LinkedList遍历的时候使用迭代的方式进行迭代;

  

      

  

     

        

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: