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

青旅半醒 2024-04-01 08:40 60阅读 0赞

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

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);

  1. Collection c = new ArrayList();
  2. c.add(1200);
  3. c.add(true);
  4. c.add(new Object());

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

  1. c.size();

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

  1. c.clear();

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

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

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

  1. c.contains("绿巨人");

#

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

  1. c.remove(1200)

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

true 代表空

  1. c.isEmpty();

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

  1. Object[] s= c.toArray();

二、Collection集合迭代(遍历)

2.1 迭代器使用程序

什么时候获取迭代器?

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

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

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

184e8d3ca6444d3596f8153ac0e68f7f.png

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

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

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

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

2.2 迭代器原理图

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

c5507ec21e164a6e90d59c9257f34f8c.png

三、Collection中 contains方法

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

87ab67f420e743189e74144e32827dda.png

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

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

466b1c6612824ed6bbb906c083db2188.png

图示解析:

集合c

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

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

29d994af19664500bce19d3b89542778.png

3.2 remove方法源码分析

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

详细课查看下面这个文章

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

e3786c2ca41240029b051521ce3c7dcd.png

四、Collection集合删除元素

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

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

#

发表评论

表情:
评论列表 (有 0 条评论,60人围观)

还没有评论,来说两句吧...

相关阅读