复习笔记09 泛型与常见数据结构

集合&迭代器

1.1 集合体系结构

 集合体系图

 

   在最顶层的父接口Collection中一定定义了所有子类集合的共同属性和方法,因此我们首先需要学习Collection中共性方法,然后再去针对每个子类集合学习它的特有方法

1.2 Collection中的常用功能

boolean add(Object e): 向集合中添加元素

void clear():清空集合中所有元素

boolean contains(Object o):判断集合中是否包含某个元素

boolean isEmpty():判断集合中的元素是否为空

boolean remove(Object o):根据元素的内容来删除某个元素

int size():获取集合的长度

Object[] toArray():能够将集合转换成数组并把集合中的元素存储到数组中

1.3 迭代器

Iterator接口的常用方法如下

hasNext()方法:判断集合中是否有元素可以迭代

next()方法:用来返回迭代的下一个元素,并把指针向后移动一位。

集合的遍历方式:

1.toArray(),可以把集合转换成数组,然后遍历数组即可

Object[] objs = c.toArray();

2.iterator(),可以返回一个迭代器对象,我们可以通过迭代器对象来迭代集合

Iterator it = c.iterator();

while(it.hasNext())  {

  System.out.println(it.next());}

1.4 并发修改异常

Exception in thread "main" java.util.ConcurrentModificationException:并发修改异常

迭代器是依赖于集合的,相当于集合的一个副本,当迭代器在操作的时候,如果发现和集合不一样,则抛出异常

解决方案:

在使用迭代器进行遍历的时候使用迭代器来进行修改(ListIterator)

 

2 增强for循环

增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。

格式:

for(元素的数据类型  变量 : Collection集合or数组){

}

它用于遍历Collection和数组。通常只进行遍历元素,不要在遍历的过程中对集合元素进行增删操作。

3 常见的数据结构

3.1 数组

3.2 链表

3.3 &队列

A:堆栈,采用该结构的集合,对元素的存取有如下的特点:

先进后出(即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素)。例如,子弹压进弹夹,先压进去的子弹在下面,后压进去的子弹在上面,当开枪时,先弹出上面的子弹,然后才能弹出下面的子弹。

B:队列,采用该结构的集合,对元素的存取有如下的特点:

先进先出(即,存进去的元素,要在后它前面的元素依次取出后,才能取出该元素)。例如,安检。排成一列,每个人依次检查,只有前面的人全部检查完毕后,才能排到当前的人进行检查。

4 List子体系

4.1 List子体系特点

A:有序的(存储和读取的顺序是一致的) 

B:有整数索引 

C:允许重复的

4.2 List的特有功能

void add(int index, E element) :将元素添加到index索引位置上

E get(int index) :根据index索引获取元素

E remove(int index) :根据index索引删除元素

E set(int index, E element):将index索引位置的的元素设置为element

4.3 LinkedList的特有功能

LinkedList底层使用的是链表结构,因此增删,查询相对ArrayList较慢

void addFirst(E e) :向链表的头部添加元素

void addLast(E e):向链表的尾部添加元素

E getFirst():获取链头的元素,不删除元素

E getLast():获取链尾的元素,不删除元素

E removeFirst():返回链头的元素并删除链头的元素

E removeLast():返回链尾的元素并删除链尾的元素

猜你喜欢

转载自www.cnblogs.com/xqd23127/p/10114505.html