首先,在Java中类库将接口(Interface)与实现(implementation)分离的。
所以主要的集合类中首先分成两大类
一个是实现了Collection接口的集合类其中包括三大类:
一、List //这个集合类是有序的,可重复的容器
(Java中的链表都是双向链接的,意味着可以向后也可以向前遍历和操作,next/previous、hasNext/hasPrevious)
而在List中又分为
LinkedList--双向链表,可以快速在中间添加,插入,删除推荐使用add,remove。
ArrayList--使用循环数组实现的队列,在进行随机访问的时候可以选择它或者是数组,推荐使用get( ),和set( )。
二、Set //add拒绝重复元素
其中含有hashSet,是基于散列表的集,遍历时元素出现的顺序并不是固定的。
还有TreeSet,这是一个有序集合,而且这个排序使用树排序(红黑树)进行的。
三、Queue //这是队列
有Queue和LinkedList都是双端队列。
还有优先队列priority queue,使用的是堆排序来进行其中元素的排序,并且remove这些方法都是按照其中的元素顺序执行
其中接口有两个基本方法(还有其他,咱不提)
四、stack 栈结构
一、boolean add(E element)
这是往实现了Collention接口的集合类中添加元素,一旦添加成功则返回true。
二、Iterator<T> iterator()
这是迭代器,实现了Collention接口的集合类中会提供一个迭代器,来让你可以方便的遍历集合中的元素。
同时这个也是接口Iterable中需要实现的方法。只要实现了这个方法,就可以用for(E element: e)来遍历实现了这个方法的集合。这个for循环默认的使用迭代器来为我们遍历其中的所有元素。
另外还有一个Iterator的接口,其中就有提供给我们对集合中的元素进行操作的方法
E next()、boolean hasNext()、void remove()
迭代器是类似于指向集合中逻辑位置相邻两个对象之间的位置,无论你使用(正向遍历,从第一个元素到最后一个)add,next,remove,他都是最迭代器所指的地方上一个对象。
而且这三个方法互相有关联。在遍历下一个元素时(使用next())时,必须要先对是否存在下一个元素进行判断,否则当已经遍历到最后一个元素并且再次进行next时就会出现Exception。而当使用remove时,必须要使用next。由于我们知道迭代器指向的是对象之间并且进行上一个对象的操作,若是一开始就进行remove操作,万一迭代器在指向第一个元素之前那么就会出现对不存在的元素进行remove操作。所以即使是逻辑之间相邻的元素进行删除,也不能连续使用remove操作。
另一个是实现了Map接口的集合类
Map(映射表)主要是用于键值对(Key-value)的存储集合类,键key一般是以字符串为准
,其中有hashMap(根据键的内容进行hash(散列)且键必须唯一,不对值进行散列。),和TreeMap。还有个WeakHashMap,他的作用是当对键的唯一引用来自散列表条目时,这一数据结构会与垃圾回收机制协同工作删除键/值对