Java Collection 集合常用容器组件用法以及区别

一、接口Collection是Java集合类的根接口,作为一个存储容器,用于存储一组对象。主要有两个继承分支,List 以及 Set。

常用的接口方法有:

1、int size();

2、    boolean isEmpty();

3、    boolean contains(Object o);

4、    Iterator<E> iterator();//Collection 接口继承自Iterable,可以作为迭代器的迭代对象

5、    Object[] toArray();

6、    <T> T[] toArray(T[] a);

7、    boolean add(E e);

8、    boolean remove(Object o);

9、    boolean addAll(Collection<? extends E> c);

10、  void clear();

二、List接口

1、接口List是有序的Collection,能够通过索引快速查找到元素。List允许有相同的元素。

2、ArrayList 数组list,底层实现是基于数组的List实现方式。如下图,


    Arraylist不是线程安全的,因为是基于数组的实现方式,根据下标查找,遍历的速度快。


    添加移除的时候 会涉及到元素的移动,效率会降低


 添加元素时,当超过容量时,需要对数组进行扩容,带来效率上的损耗。


     2、LinkedList 基于链表的List的实现,这个容器类也不是线程安全的。链表的好处就是增删的效率高,遍历的效率低。因为遍历会从链头开始遍历。


    只需要简单的操作节点的左右节点就能快速的增加删除元素


 

   如果是使用LinkedList作为查找,遍历的对象将是痛苦的。需要从头开始遍历。


    对比ArrayList,LinkedList,ArrayList,LinkedList适合在非多线程情况下,否则会带来多线程的问题。Arraylist可以快速的进行元素的下标获取元素,LinkedList可以进行快速的元素删除,添加操作。

3、Vector

     Vector类似于Arraylist类,Vector是同步的,当在迭代获取Vector的元素时,此时对这个Vector添加元素将会报错。注意这个异常的处理。

4、Stack类

     继承自Vector,实现先进后出的栈容器,基本方法有push() 、pop()、 peak()

二、Set接口

 Set接口是不能包含重复元速度的Collection(集合),Set集合最多有一个null元素。








猜你喜欢

转载自blog.csdn.net/zsf5201314z/article/details/79277283