Collection接口

本文介绍了Java集合框架中的集合与数组的区别,重点阐述了集合的优势。讲解了Collection接口及其子接口List和Set的特点,以及Map接口在存储键值对时的作用。详细解析了Collection接口中的常用方法,如添加、删除、判断等,并介绍了Iterator迭代器的使用原理及foreach循环遍历集合的实现。
摘要由CSDN通过智能技术生成

1,集合和数组的简单对比

  1. 集合,数组都是对数据进行存储操作的数据结构,简称Java容器
  2. 数组在存储数据时的特点
    1. 数组一旦初始化之后,长度就确定了
    2. 数组一旦定义好之后,其存放的数据类型也就确定了
  3. 数组在存储数据时的缺点
    1. 数组一旦初始化之后,长度就确定了
    2. 数组中提供的方法非常有限,非常不方法,并且效率不高
    3. 数组存储数据的特点,有序,可重复,对于无序,不可重复的需求不能满足
    4. 获取数组中实际元素的个数,数组没有对应的方法和属性
  4. 集合存储的有点
    1. 解决数组存储数据的缺点

2,Java集合框架概述

  1. Java集合可分为Collection和Map两种体系

    • Collection接口:单列数据,定义了存取一组对象的方法的集合

      1. List:元素有序、可重复的集合
      2. Set:元素无序、不可重复的集合
    • Map接口:双列数据,保存具有映射关系“key-value对”的集合

  2. Collection接口继承树
    在这里插入图片描述

  3. Map接口继承树

在这里插入图片描述

3,Collection 接口方法

  1. 添加
    • add(Object obj)
    • addAll(Collection coll)
  2. 获取有效元素的个数
    • int size()
  3. 清空集合
    • void clear()
  4. 是否是空集合
    • boolean isEmpty()
  5. 是否包含某个元素
    • boolean contains(Object obj):是通过元素的equals方法来判断是否是同一个对象
    • boolean containsAll(Collection c):也是调用元素的equals方法来比较的。拿两个集合的元素挨个比较。
  6. 删除
    • boolean remove(Object obj) :通过元素的equals方法判断是否是要删除的那个元素。只会删除找到的第一个元素
    • boolean removeAll(Collection coll):取当前集合的差集
  7. 取两个集合的交集
    • boolean retainAll(Collection c):把交集的结果存在当前集合中,不影响c
  8. 集合是否相等
    • boolean equals(Object obj)
  9. 转成对象数组
    • Object[] toArray()
  10. 获取集合对象的哈希值
    • hashCode()
  11. 遍历
    • iterator():返回迭代器对象,用于集合遍历

4,Iterator迭代器接口

  1. Iterator 仅用于遍历集合,Iterator 本身并不提供承装对象的能力。如果需要创建Iterator 对象,则必须有一个被迭代的集合。

  2. 集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前。

  3. Iterator接口的方法

    • boolean hasNext()
    • E next()
    • void remove()
  4. 三个方法的使用案例

    代码如下:

    Iterator iter = coll.iterator();//回到起点
    while(iter.hasNext()){
    Object obj = iter.next();
    if(obj.equals("Tom")){
    iter.remove();
    } 
    }
    
  5. 迭代器的执行原理

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xokhgkfG-1652192742586)(C:\Users\Think\AppData\Roaming\Typora\typora-user-images\image-20220508225735372.png)]

    • 创建了iterator实例之后就相当于有一个指针对象
    • iterator.hasNext():判断是否有下一个元素
    • 如果存在下一个元素,则调用next()方法,此时的动作有两个
      • 将创建了iterator实例之后生成的指针下移
      • 将创建了iterator实例之后生成的指针下移后位置上的元素返回

5,使用 foreach 循环遍历集合元素

  1. foreach还可以用来遍历数组。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-49gy2ep2-1652192742588)(C:\Users\Think\AppData\Roaming\Typora\typora-user-images\image-20220508231730661.png)]

  2. 代码案例

    public class ForTest {
    public static void main(String[] args) {
    String[] str = new String[5];
    for (String myStr : str) {
    myStr = "aaaaa";
    System.out.println(myStr);
    }
    for (int i = 0; i < str.length; i++) {
    System.out.println(str[i]);
    } } }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值