集合框架(List
概述及特点以及存储字符串并遍历)
List
概述及特点:元素有序,并且每一个元素都存在一个索引.元素可以重复.
集合框架(List
集合的特有功能概述和测试)
List集合的特有功能概述
-
void add(int index,E element)
: 在指定索引处添加元素 -
E remove(int index)
:移除指定索引处的元素 返回的是移除的元素 -
E get(int index)
:获取指定索引处的元素 -
E set(int index,E element)
:更改指定索引处的元素 返回的而是被替换的元素
功能使用和Collection
很相似,如何使用可以查看我前面的一篇博客
集合框架(ListIterator
的特有功能)
ListIterator
继承自Iterator
可以使用Iterator
中的方法
ListIterator
的特有功能
boolean hasPrevious()
: 是否存在前一个元素
E previous()
: 返回列表中的前一个元素
以上两个方法可以实现反向遍历 但是注意 要完成反向遍历之前 要先进行正向遍历 这样指针才能移到最后
如果直接反向遍历是没有效果的 因为指针默认位置就在最前面 他前面没有元素
集合框架(并发修改异常产生的原因及解决方案)
ConcurrentModificationException
出现
我们用Iterator
这个迭代器遍历采用hasNext
方法和next
方法,集合修改集合 会出现并发修改异常
原因是我们的迭代依赖于集合 当我们往集合中添加好了元素之后 获取迭代器 那么迭代器已经知道了集合的元素个数
这个时候你在遍历的时候又突然想给 集合里面加一个元素(用的是集合的add
方法) 那迭代器不同意并且报错了
解决方案1 我们用ListIterator
迭代器遍历 用迭代器自带的add
方法添加元素 那就不会报错了
解决方案2 使用for
循环遍历集合 添加元素 不会报错
集合框架(数据结构之栈和队列)
数据结构概述及常见数据结构:
数据结构其实就是存储数据的格式
分类: 栈 , 队列 , 数组 , 链表 , 树 , 哈希表
栈特点: 先进后出
队列: 先进先出
集合框架(数据结构之数组和链表)
数组特点: 查询快 , 增删慢,因为以数组类型存储的数据每个元素都有索引,所以要查找第几个的元素很方便,但是删除就会相对复杂些,因为删除实际上就是对原来元素的覆盖,而覆盖后这里的索引就会没用,所以应该如何处理非常麻烦
链表特点: 查询慢 , 增删快,因为链表以链式来存储数据,所以要查询元素必须要将每一个元素都遍历一遍,比较麻烦,但是增删非常方便,直接修改指针就可以实现
集合框架(List
的三个子类的特点)
List
的三个子类的特点:
-
ArrayList
:底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。 -
Vector
:底层数据结构是数组,查询快,增删慢。
线程安全,效率低。 -
LinkedList
:底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。
List
有三个子类,我们到底使用谁呢?
得看要安全还是要效率,是查找多还是增删多