java基础之谈谈集合类(关于集合类的总结和比较)

时间:2023-02-15 10:11:31

 前言:集合类是平时使用比较多的一个基础类库,是java保存对象的一种方式。正因为平时用的比较多,说的也是头头是道,趁着好好总结和归纳一下还是大有益处的。

一.两个鼻祖接口

1)Conllection。一个独立元素的序列,其中的元素都要服从一条和多条规则,所有的单列集合类都是实现其接口,像List,Set,Queue.....

主要方法:像添加一组元素addAll()等

2)Map。一组成对的“键—值”对象,允许使用键来查询值.

二.主要实现类

1)list也是一个接口,可以将元素维护在特定序列中可以存储重复元素,不过相比较conllection的基础上添加了大量的方法,比如在List中中间插入和移除元素。

两个常用实现类

1,基本的ArrayList,它长于随机访问元素,但是在List的中间插入和移除元素时比较慢,底层是一个数组

2,LinkedList,则可以通过较低的List中间进行插入和删除元素 ,优化了顺序访问但是随机访问方面相对比较慢,但是特性会比比ArrayList丰富一些,可以移除增加首位元素。

其特性还有使用了其用作,栈、队列,或双端队列的方法。

2)Stack

栈通常是指“后进先出”的容器,就是最后一个压入栈的元素,第一个弹出栈,而LinkedList具有能够直接实现栈的所以功能的方法,因此可以将LinkedList作为栈使用。

3)Set

Set不保存重复元素,与Conllection完全一样的接口,因此没有额外的功能(只是与conllection行为不同,是一个多态和继承的典型应用)

1,HashSet,出于对速度原因的考虑,使用散列函数,其维护的顺序与以下两个实现类也是不同的。

2,TreeSet,是将元素存储在红—黑树数据结构中,所以储存的元素时有序的。

3,LinkeHashSet因为查询速度的原因也使用了散列函数,但是使用了链表来维护元素的插入顺序。

4)Map 将对象映射到其他对象

HashMap,用来快速访问

TreeMap,保持了键始终处于排序状态

LinkedHashMap,保持了元素的插入顺序,但也通过散列提高了访问速度。

5)Queue

队列是一种先进先出的容器,进入的顺序和取出的顺序是相同的,而LinkedList提供了方法支持队列的行为,并且实现了Queue接口,因为LinkedList可以用作Queue的一种实现

三.迭代器

1)迭代器遍历并选择序列中的对象,是一个轻量级的对象,创建它的代价小,在java中,Iterator只能单向移动,使用next()获取序列中的下一个元素,使用hashNext()检查序列中是否还有元素,使用remove()将迭代器新近返回的元素删除,这些的前提是使用iterator()返回一个迭代器对象。

2)ListInterator是一个更加强大的迭代器子类,不过只能用来各种List类的访问,基本迭代器是单向移动的而ListInterator是可以双向移动的。