集合的概述

JavaSE复习笔记

第十章 集合

一、集合的概述

  1. 集合的概念理解:存储数据的容器

  2. 集合与数组比较:

    • 数组长度不可变;集合长度可变

    • 数组的功能单一;集合提供了丰富的API功能,比如增删改查等

    • 数组存储元素的特点单一,有序,可重复;各种集合存储元素有不同特点

    • 数组可以存储基本数据类型和引用数据类型;集合只能存储引用数据类型。

  3. 集合框架体系

     

二、Collection接口

Collection表示一组对象,是一个顶层接口。

常用方法:

1、添加元素

(1)add(E obj):添加元素对象到当前集合中

(2)addAll(Collection<? extends E> other):添加other集合中的所有元素对象到当前集合中,即this = this ∪ other

2、删除元素

(1) boolean remove(Object obj) :从当前集合中删除第一个找到的与obj对象equals返回true的元素。

(2)boolean removeAll(Collection<?> coll):从当前集合中删除所有与coll集合中相同的元素。即this = this - this ∩ coll

3、判断

(1)boolean isEmpty():判断当前集合是否为空集合。

(2)boolean contains(Object obj):判断当前集合中是否存在一个与obj对象equals返回true的元素。

(3)boolean containsAll(Collection<?> c):判断c集合中的元素是否在当前集合中都存在。即c集合是否是当前集合的“子集”。

4、获取元素个数

(1)int size():获取当前集合中实际存储的元素个数

5、交集

(1)boolean retainAll(Collection<?> coll):当前集合仅保留与c集合中的元素相同的元素,即当前集合中仅保留两个集合的交集,即this = this ∩ coll;

6、转为数组

(1)Object[] toArray():返回包含当前集合中所有元素的数组

三、迭代器与增强for

  1. Iterator迭代器用于遍历Collection集合

    Collection<Integer> c = new ArrayList<>();
    c.add(11);
    c.add(22);
    c.add(33);
    //获取迭代器
    Iterator<Integer> it = c.iterator();
    //调用迭代器的方法遍历集合
    while(it.hasNext()){//判断是否有下一个元素
        Integer i = it.next();//取出下一个元素,并向下移动指针
        System.out.println(i);
        it.remove();//移除当前元素
    }
  2. 增强foreach循环

    格式:

    for(元素的类型  变量 : 数组或集合){
        循环体
    }

    示例:

    //遍历数组
    int[] arr = {1,2,3};
    for(int i : arr){
        System.out.println(i);
    }
    //遍历集合
    Collection<Integer> c = new ArrayList<>();
    for(Integer i : c){
        System.out.println(i);
    }
  3. 增强for与迭代器、Iterable接口的关系

    增强for底层实际是使用Iterator迭代器实现的,实现了Iterable接口的类都可以使用迭代器遍历,也可以使用增强for遍历。

  4. 快速失败机制:

    当使用迭代器遍历集合的同时,使用迭代器之外的方法来修改集合,会导致并发修改异常,这就是快速失败机制,目的是立即阻止这样的操作,因为可能导致最终数据的不准确等风险。

    迭代器的快速失败机制借助集合的属性modCount来实现。

    快速失败机制并不能得到保证,而是尽最大努力抛出异常。

四、List接口

  1. List接口元素特点:

    • 元素有序

    • 元素可以重复

    • 可以通过索引访问元素

  2. List接口特有方法:

    List除了从Collection集合继承的方法外,List 集合里添加了一些根据索引来操作集合元素的方法。

    1、添加元素

    • void add(int index, E ele)

    • boolean addAll(int index, Collection<? extends E> eles)

    2、获取元素

    • E get(int index)

    • List subList(int fromIndex, int toIndex)

    3、获取元素索引

    • int indexOf(Object obj)

    • int lastIndexOf(Object obj)

    4、删除和替换元素

    • E remove(int index)

    • E set(int index, E ele)

  3. List集合的遍历方式

    • 迭代器遍历

    • 增强for循环遍历

    • 普通for循环遍历

五、ArrayList实现类

  1. 底层结构:数组

  2. 效率:查询快,增删慢

  3. 比较Vector:底层结构数组,线程安全,效率相对低,不推荐使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值