java集合-基础框架(一)
Java集合框架是java提供的工具包,在java.util.*中,这个包中包含了常用的数据结构:集合、数组、链表、栈、队列、映射等。java集合框架主要可以分为四个部分:List列表、Set集合、Map映射和工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)。
Collection
Collection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作和属性。
Collection包含了List和Set两大分支。
- List是一个有序的队列,可重复,每一个元素都有它的索引,第一个元素的索引值是0。
List的实现类有
- ArrayList:线性队列(数组),线程非安全的,动态扩容50%,查改优势。
- Vector:线性队列,线程安全的,动态扩容100%。
- LinkedList:链表结构,适合删除操作比较频繁的操作。
- Stack。
- Set是一个无序的,不允许有重复元素的集合。
Set的实现类有HastSet和TreeSet。HashSet依赖于HashMap,它实际上是通过HashMap实现的;TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。
AbstractCollection
AbstractCollection是一个抽象类,它实现了Collection中除了iterator()和size()之外的所有方法,
AbstractCollection的主要作用是方便其他类实现Collection.,比如ArrayList、LinkedList等。它们想要实现Collection接口,通过集成AbstractCollection就已经实现大部分方法了,再实现一下iterator()和size()即可。
Iterator
它是遍历集合的工具,即我们通常通过Iterator迭代器来遍历集合。我们说Collection依赖于Iterator,是因为Collection的实现类都要实现iterator()函数,返回一个Iterator对象。
Iterator有3个方法
- boolean hasNext()检查是否有存在下一个元素。
- E next()读取下一个元素,从0开始,next()在读取到集合末尾时,会抛出一个异常NoSucheElementException,所以在遍历时需要hasNext();
- void remove(),在remove()时,必须要先调用一下next();因为remove()删除的是上次调用next方法返回时的元素。所以在调用remove之前必须要调用一次next();
例如:Iterator it=list.iterator();
it.next();
it.remove();//成功。
如果是这样
it.remover();//失败。
如果是这样
it.next();
it.remover();//成功
it.remover();//失败
ListIterator
ListIterator是一个继承Iterator的接口,它是队列迭代器。专门用于遍历List,能提供向前和向后遍历。相比于Iterator,它新增了添加、是否存在上一个元素、获取上一个元素等API接口。
addFrist();将指定元素插入此列表的开头
addLast();
getFrist();返回此列表的第一个元素
getLast();
getFrist()和getLast()方法是获取元素,如果集合中没有元素,会抛出NoSuchElementException
removeFrist();
removeLast();
Map
Map是一个映射接口,即key-value键值对。Map中的每一个元素包含“一个key”和“key对应的value”。
- AbstractMap是个抽象类,它实现了Map接口中的大部分API。而HashMap,TreeMap,WeakHashMap都是继承于AbstractMap。
- Hashtable虽然继承于Dictionary,但它实现了Map接口。
最后,Arrays和Collections。它们是操作数组、集合的两个工具类。