JavaSE——Collection迭代器的使用及源码分析、集合删除元素、Collection常用方法

了解这篇文章之前可以先看看我们之前学的集合继承图,会让我们的理解更加的深刻

JavaSE——集合、集合继承结构图_我爱布朗熊的博客-CSDN博客

目录

一、Collection接口中的常用方法(子接口都可用)

1.1  add() 往集合中添加元素

1.2  size()  获取集合中元素的个数

1.3  clear() 移除collection中所有的元素(清空集合)

1.4 contanis()  判断当前集合中是否包含某个元素

1.5 remove()  删除集合中的某个元素

1.6  isEmpty() 判断集合是否是空

1.7  toArray() 将集合转化成为一个数组

二、Collection集合迭代(遍历)

2.1 迭代器使用程序

2.2 迭代器原理图

三、Collection中 contains方法

  3.1  contains方法源码分析remove方法源码分析

  3.2  remove方法源码分析

四、Collection集合删除元素



一、Collection接口中的常用方法(子接口都可用)

存放在集合中的类型,一定要重写equals方法,下面我们会在contains方法中解释

Collection中能存放什么元素?

    没有使用泛型之前,Collection中可以存储Object所有的子类型

    使用了泛型之后,Collection中智能存储某个具体的类型

    集合中不能直接存储基本数据类型,也不能存储java对象,只是存储java对象的内存地址

1.1  add() 往集合中添加元素

  这个地方是自动装箱了:Integer x = new Integer(1200);

        Collection c = new ArrayList();
        
        c.add(1200);
        c.add(true);
        c.add(new Object());

    

1.2  size()  获取集合中元素的个数

c.size();

1.3  clear() 移除collection中所有的元素(清空集合)

c.clear();

1.4 contanis()  判断当前集合中是否包含某个元素

会返回一个boolean类型,包含的话返回true

下面我们会对这个方法进行详解

  c.contains("绿巨人");

1.5 remobe  删除集合中的某个元素

c.remove(1200)

1.6  isEmpty() 判断集合是否是空

true 代表空

  c.isEmpty();

1.7  toArray() 将集合转化成为一个数组

    Object[] s= c.toArray();

二、Collection集合迭代(遍历)

2.1 迭代器使用程序

 什么时候获取迭代器?

      当我们的元素全部添加进入集合的时候,再获取迭代器,因为只要集合结构发生改变,迭代器必须重新获取

我们可以通过下面文章的Collection集合继承图来详细查看集合迭代到底是怎么调用的

JavaSE——集合、集合继承结构图_我爱布朗熊的博客-CSDN博客

下面的方法是在Collection以及子类中使用:

it.hasNext()  表示如果仍有元素可以迭代,则返回true(返回值是boolean)

it.next()        表示返回迭代的下一个元素(返回值是Object)

//      创建集合对象
       Collection c= new ArrayList();
        c.add("abcd");
        c.add(new Object());
        c.add(100);
//      第一步:获取迭代器
        Iterator it = c.iterator();
//      第二步:开始迭代
        while (it.hasNext()){
            System.out.println(it.next());
        }

2.2 迭代器原理图

在集合中存储的并不是java对象,而是内存地址,下面为了好理解,我们就先这么画

三、Collection中 contains方法

  3.1  contains方法源码分析remove方法源码分析

 当我们查看contains方法的时候,我们发现底层调用了equals方法,如下图所示:

图中的o就是我们代码中的x,es[i]就是我们集合中的元素,并且String的equals方法已经给我们重写了

图示解析:

集合c

如果重写了equals方法的话,contains方法会直接比较比较内容,所以最终的输出结果是true

如果没有重写equals方法的话,比较的就是内存地址(所以放在集合中的元素,尽量重写equals方法

   

  3.2  remove方法源码分析

当我们删除s2的时候,会不会吧s1给删除掉

详细课查看下面这个文章

JavaSE——集合删除元素以及remove()方法解析_我爱布朗熊的博客-CSDN博客_java中remove方法

四、Collection集合删除元素

详细可以查看下面这一篇文章,说明了在删除集合中元素的时候,应该调用迭代器的remove方法而不是Collection集合的remove方法

JavaSE——集合删除元素以及remove()方法解析_我爱布朗熊的博客-CSDN博客_java中remove方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱布朗熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值