java进阶笔记Day(五)

集合的继承体系
Collection接口
Collection是集合体系中的根接口,它定义了一些所有集合多具备的方法。任何一个具体的集合都可以使用这些方法
public boolean add(E e)
往集合中添加元素到末尾
public boolean addAll(Collection<? extends E> c)
把一个集合中的所有元素添加另一个集合中
public void clear()
清空集合中的元素
public boolean contains(Object o)
判断集合是否包含指定的元素
public boolean isEmpty()
判断集合是否为空
public boolean remove(Object o)
移除指定的元素
public int size()
获取集合的长度
pubic Object[] toArray()
把集合转换为数组
集合的遍历
迭代器遍历
因为有些集合是有索引的、有些集合是没有索引的,就需要一种通用的遍历方式,这种遍历方式就叫做迭代器
Collection coll=new ArrayList<>();
coll.add(“hello”);
coll.add(“world”);
coll.add(“java”);

//获取迭代器对象
Iterator it=coll.iterator();
//hasNext(): 判断是否有元素可以迭代(获取)
while(it.hasNext()){
//next(): 获取元素
String str=it.next();
System.out.println(str);
}
//注意:如果遍历到最后一个元素,还强行使用next()获取元素就会出现 NoSuchElementException
增强for遍历
迭代器遍历集合代码写起来比较麻烦,所以Java语言提供了另外一个更加简化的遍历方式,就是增强for.
【增强for的底层原理其实就是迭代器】

Collection coll=new ArrayList<>();
coll.add(“hello”);
coll.add(“world”);
coll.add(“java”);
//增强for遍历
for(String str:coll){
System.out.println(str);
}
并发修改异常(了解)
当我们使用迭代器或者增强for去遍历集合的时候,集合自己不能去修改集合。

并发修改异常的产生原理(ConcurrentModificationException)
//Iterator的next方法,在获取元素的时候会检查元素是否有被修改,如果元素被修改了那么就会出现并发修改异常
if (modCount != expectedModCount){
throw new ConcurrentModificationException();
}
注意:集合每次去调用add方法和remove方法的时候,都会对modCount的值进行递增,表示这个集合被修改了1次
ListIterator迭代器(了解)
List集合多了一个listiterator()方法,用来获取List集合的特有迭代器,它比普通的迭代器多了一些对集合进行操作的方法

public void add(E e)
添加元素
public boolean hasNext()
判断是否有下一个元素
public boolean hasPrevious()
判断是否有上一个元素
public E next()
获取下一个元素
public E previous()
获取上一个元素
public void remove()
移除当前的元素
public void set(E e)
修改当前的元素
数据结构
每一种集合内部数据的组织方式是不一样的,他们的特点也不一样,把这种数据的组织方式就叫做数据结构。

栈结构:先进后出(子弹夹)
进栈(压栈):每次存储元素时,这个元素存储到栈顶的
出栈(弹栈):每次获取元素,获取栈顶的元素

队列结构:先进先出(安检机)
入队列:从对列的后端进入
出队列:从队列的前端出来

数组结构:查询块、增删慢
查询块:通过索引可以直接找到元素
增删慢:因为数组的长度是固定的,当添加元素和删除元素时会进行元素复制

链表结构:查询慢、增删快
查询慢:从头往尾一个一个查
增删快:把链表的指向变动一下即可
集合底层的数据结构

Collection接口
List: 有索引、有序、元素可以重复
ArrayList:数组结构(查询块、增删慢)
LinkedList:链表结构(查询慢、增删快)

Set:没有索引、无序、元素不能重复
HashSet: 哈希表结构
TreeSet: 红黑树结构
LinkedList的特有方法
LinkedList是链表结构,多了一些针对头和尾进行操作的方法

public void addFirst(E e)
往头部添加元素
public void addLast(E e)
往尾部添加元素

public E removeFirst()
移除头部的元素
public E removeLast()
移除尾部的元素

public E getFirst()
获取头部的元素
public E getLast()
获取尾部的元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值