Collection接口
Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。
一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
成员方法:
添加:
boolean add(Object e)
boolean addAll(Collection c)
删除:
clear()
boolean remove(Object o)
boolean removeAll(Collection<?> c)
boolean retainAll(Collection<?> c)
修改:
查找:
boolean contains(Object o)
boolean containsAll(Collection<?> c)
获取集合的属性:
判空: boolean isEmpty()
长度: int size()
遍历:
Iterator<E> iterator()
Object[] toArray()
Object[] toArray()
把集合转成数组,可以实现集合的遍历
注意事项:
toArray()返回的数组和原集合,不再有瓜葛, 修改数组,不会修改集合。
因此,一般情况我们不会用这种方式进行遍历;
数组可以存储基本数据类型,也可以存储引用数据类型,但是集合只能存储引用数据类型
自动装箱和自动拆箱:(JDK1.5新特性)
基本数据类型 包装数据类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
自动装箱:基本数据类型 --> 包装数据类型
自动拆箱:包装数据类型 --> 基本数据类型
Iterable接口
public interface Collection<E>extends Iterable<E> 说明所有的集合都可以遍历。
构造方法:
Iterator iterator()
返回在此 collection 的元素上进行迭代的迭代器。
public interface Iterator:
对 collection 进行迭代的迭代器。
方法:
boolean hasNext() 判断集合中是否还有元素可以迭代
Object next() 返回下一个元素,并将迭代器的指针移到下一个位置
void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素
List 接口
public interface List<E> extends Collection<E>
有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。
用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
与 set 不同,列表通常允许重复的元素
方法:
增:
void add(int i, Object obj)
boolean addAll(int index, Collection<? extends E> c)
删:
Object remove(int i)
改:
Object set(int index, Object element)
查:
Object get(int i)
int indexOf(Object o)
int lastIndexOf(Object o)
获取子串:
List subList(int fromIndex, int toIndex) 包左不包右
遍历:
ListIterator<E> listIterator()
ListIterator<E> listIterator(int index)
ListIterator
ListIterator<E> listIterator()
ListIterator<E> listIterator(int index)
ListIterator:
系列表迭代器,允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置。
方法:
void add(E e)
boolean hasNext()
boolean hasPrevious()
E next()
int nextIndex()
E previous()
int previousIndex()
void remove()
void set(E e)
只有改变集合结构的操作才会报ConcurrentModificationException.
解决方案:
用集合遍历,用集合修改
用迭代器遍历,用迭代器修改
ArrayList 类
ArrayList类概述
底层数据结构是数组,查询快,增删慢
线程不安全,效率高
ArrayList()
构造一个初始容量为 10 的空列表。
ArrayList(Collection<? extends E> c)
构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。
ArrayList(int initialCapacity)
方法:
void trimToSize()
将此 ArrayList 实例的容量调整为列表的当前大小。
LinkedList 类
LinkedList类概述
在JDK中是以双向链表实现的。
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
特有的方法:
void addFirst(E e)
void addLast(E e)
E getFirst()
E getLast()
public E removeFirst()
public E removeLast()
Vector 类
Vector类概述
底层数据结构是数组,查询快,增删慢
线程安全,效率低(我们也不用Vector)
特有的方法:
void addElement(E obj) --- add(E obj)
public E elementAt(int index) --- get(int index)
public Enumeration elements() --- iterator();
Enumeration: Iterator:
boolean hasMoreElements() --- hasNext()
E nextElement() next()
int capacity()