javaSE 笔记 Collection + List + 并发修改异常 + ListIteraror + 增强for循环 + 常见数据结构 + List集合子类(LinkedList)

集合体系结构

集合分为Collection(单列),Map(双列)有映射关系,其中单列可重复元素用List实现,可重复用Set实现
List主要学习ArratList和LinkedList, Set主要学习HashSet和TreeSet,Map主要学习HashMap

Collection

用的时候只能通过多态的手段,用子接口比如ArrayList去创建对象,然后Collection的引用,这种父类引用指向子类对象
常用方法:add,remove,clear,contains,isEmpty,size
遍历:用迭代器遍历,iterator iterator(),返回此集合中元素的迭代器,通过集合的iterator()方法得到的
iterator中的常用方法:E next()方法,返回迭代中的下一个元素 E是泛型
boolean hasNext(): 如果迭代具有更多元素,返回true

一般的遍历步骤分为三步:1.创建迭代器对象 2.通过hasNext()判断是否还有元素 3.通过next()获取下一个元素

List集合概述与特点

有序:存储和取出的元素顺序一致
可重复:存储的元素可以重复
List特有方法(Collection没有):add,remove,前两个都是在指定位置插入或删除元素,set,get
list遍历,通过size()和get()方法配合,进行遍历,也可以用迭代器遍历

并发修改异常

看黑马视频P229
ConcurrentModificationException
产生原因:迭代器遍历的过程中,通过集合对象修改了集合中元素的长度,造成了迭代器获取元素中判断预期修改值和实际修改至不一致
就是add方法会修改一个值,而用for循环搭配get()方法,这个get不会修改那个值。
解决方案,用for循环遍历、

ListIterator(用的不多)

这是通过List集合的listIterator()方法得到,是List集合特有的迭代器
允许任一方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置。
常用方法:E next() boolean hasNext() E previous() boolean hasPrevious() add(E e)
这里的add方法并不会触发并发修改异常,具体原因看黑马视频

增强for循环

目的:简化数组和Collection集合的遍历
内部原理是个迭代器,如果在遍历的时候增加元素,会导致报并发修改异常
格式: for(元素数据类型 变量名:数组或者Collection集合){
//在此处使用变量即可,该变量就是元素
}

迭代器:集合特有的遍历方式
普通for:带有索引的遍历方式
增强for:最方便的遍历方式

常见数据结构

栈:先进后出
队列:先进先出
数组:查询效率高,删除数据效率低,因为要将原始数据删除,同时后面每个数据前移,添加数据同样效率低,因为后面数据需要后移
链表:一个结点存了三个东西,自身地址,具体数据,下一个结点地址,相比于数组,增删快,查询慢,从头开始查询

List集合子类特点

常用子类ArrayList(底层是数组实现,查询快,增删慢),LinkedList(底层是链表实现,查询慢,增删快)

LinkedList集合特有功能

因为是链表实现的,所以有针对头尾的功能:addFirst addLast getFirst getLast removeFirst removeLast

posted @ 2021-08-21 16:58  Lanezzz  阅读(117)  评论(0)    收藏  举报