Java_1_14

集合

  • 就是一个容器
  • 特点:
    • 集合容器长度可变
    • 同一个集合容器可以装不同的东西
    • 只能装 引用数据类型 的数据

集合和数组的区别

+ 数组长度不可变;集合长度可变
+ 同一数组只能装一种数据类型的东西;同一集合可以装多种数据类型的数据
+ 数组既可以装基本数据类型的数据,也可以装引用数据类型的数据;集合只能装引用数据类型的数据 

集合的体系结构

Collection
  • 单列集合顶层接口
    • List 子接口 — 可重复
      • ArrayList 实现类
        • 数组
      • LinkedList 实现类
        • 双向链表
      • Vector 实现类
        • 数组
    • Set 子接口 — 不可重复
      • HashSet 实现类
        • 哈希表(元素为链表的数组)
      • TreeSet 实现类
        • 红黑树(自平衡的二叉树)
      • LinkedHashSet 实现类
        • 链表和哈希表
Map
  • 双列集合顶层接口
    • HashMap
    • TreeMap

Collection

  • 是单列集合的顶层接口,表示一组对象,这些对象也称作Collection的元素
  • JDK 不提供此接口的任何直接实现,它提供更具体的子接口实现

创建Collection 集合的对象

  • 多态的方式
  • 具体的实现类 ArrayList、…

Collection 集合常用方法

方法名说明
boolean add(E e)添加 元素
boolean remove(Object obj)从集合中 删除 指定的元素
boolean removeif(Predicate p)从集合中 删除 指定的 1个或多个 元素
void clear()清空 集合中的元素
boolean contains(Object obj)判断集合中是否 存在 指定的元素
boolean isEmpty()判断集合是否为空
int size()集合的长度,即集合中元素的个数
+ 数组对象.length + 字符串.length() + 集合对象.size() ### Collection 集合的遍历 #### 迭代器遍历 Iterator + Iterator:迭代器,集合的专用遍历方式 + iterator< E > iterator(): + 返回此集合中元素的迭代器,通过iterator()方法得到 + 迭代器是通过集合的iterator()方法得到的,所以说他是依赖于集合而存在的 + Iterator 中的常用方法 + boolean hasNext() + 若迭代有更多元素,返回true + E next() + 返回迭代的下一个元素 + Example
    Colleaton c = new  ArrayList();
	Iterator it = c.iterator();
	while(it.hasNext()){
		Object obj = it.next();
		System.out.println(obj);
	}

增强 for 循环

for(数据类型 变量名: 容器名){

}
  • 增强for循环可以遍历容器,也可以遍历数组
  • 增强for循环底层使用的是 迭代器

并发修改异常

  • ConcurrentModificationException
  • 产生原因
    • 迭代器遍历过程中,通过集合对象修改了集合中元素的长度,造成了迭代器获取元素中判断预期修改值和实际修改值不一致
  • 解决方案
    • 用for循环遍历,然后用集合对象做对应的操作即可
    • 也可以直接用迭代器修改集合中元素的长度

ListIterator 列表迭代器

  • 通过List集合的listIterator()方法得到,是List集合特有的迭代器
  • 用于允许程序员沿任一方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置

常用方法

方法名说明
E next()返回迭代中的下一个元素
boolean hasNext()如果迭代具有更多元素,返回true
E previous()返回列表中的上一个元素
boolean hasPrevious()如果迭代在相反方向上具有更多元素,返回true
void add(E e)将指定元素插入列表
## List ### List集合的特点 + 有序(存入顺序和取出顺序是一致的) + 可重复 + 有索引 ### List集合的两个儿子 + ArrayList + LineList ### List集合中特有的方法
方法名说明
public void add(int index,E e)往指定索引处 添加 元素
public boolean remove(Object obj)从集合中 删除 指定的元素
public Object remove(int index)从集合中 删除 指定位置的元素,并返回被删除的那个元素
public Object set(int index,E e)将指定位置的元素 设置为 e,并返回被修改的那个元素
public E get(int index)返回指定位置的元素
### List 集合的遍历 + 迭代器 + 增强for循环 + 普通for循环(size() 和 get())

数据结构

  • 先进后出

队列

  • 先进先出

数组

  • 查询快,增删慢
    ###链表
  • 增删快,查找慢

LinkedList

  • 底层数据结构是 双向链表

LinkedList的特有方法

方法名说明
public void addFirst(E e)添加 元素到第一个位置
public void addLast(E e)添加 元素到最后一个位置
public Object getFirst()获取第一个位置的元素
public Object getLast()获取最后一个位置的元素
public Object removeFirst()删除第一个位置的元素
public Object removeLast()删除最后一个位置的元素
## 泛型 ### 格式:,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值