专栏首页零基础自学Java【Java】基础23:Collection集合

【Java】基础23:Collection集合

在Java程序里面有一个非常重要的概念,叫做容器。

数组就是其中的一种容器,除了数组,还有一种叫做集合。

它们之间有何区别?

  • 数组长度固定,不可变,可以存储任何数据类型,但是存储的数据类型要一致。
  • 集合长度可变,只能存储引用数据类型(基本数据类型会转换成对应的引用数据类型,也就是包装类),存储的数据类型可以不一致。

集合按照其储存结构分为单列集合(Collection)和双列集合(Map)。

常用的ArrayList类就是一种单列集合。

单列集合之间的继承体系如下图:

其中Collection、List、Set都是接口,其他的全部都是具体的实现类。

今天主要学习单列集合Collection。

一、Collection常用方法

Collection是所有单列集合的父接口,根据继承的原则,也就是说,Collection中的所有方法,其子类是可以直接使用的。

常用的方法有如下几种:

①add方法:向集合中添加元素。

向collection集合中添加元素必定成功,因为collection集合的元素可以重复,有的集合不能重复添加元素,就会失败。

②size方法:获取集合的大小。

也就是一共多少个元素,上图例子输出:3。

③remove方法:移除对应的元素。

如果该元素在集合中存在,返回true,移除成功。

如果该元素在集合中不存在,返回false,移除失败。

上图例子输出:true。

④contains方法:判断集合是否包含该元素。

上图例子输出:true。

⑤clear方法:清空集合。

将集合中的所有元素清空,但是集合依旧还存在。

若是collection=null,表示不仅元素没了,集合也没了。

⑥toArray方法:将集合转换成数组,因为集合存储的数据类型不确定,所以返回的数组只能是Object数组。

⑦isEmpty方法:判断集合是否为空。

注意Collection是没有索引的,所有它不能根据索引找到对应的元素,因此它才没有get方法。

那如果要遍历集合将元素一个个打印出来该怎么办?

二、迭代器iterator

数组有一个重要的用法叫数组遍历,类似的ArrayList集合也能遍历。

利用for循环语句就能实现,而之所以能实现,是因为它们是自带索引的。

但是collection集合并没有索引,所以无法使用for循环将元素遍历,而迭代器的作用就是相当于集合遍历。

迭代器的使用方法如下:

①获取集合的迭代器:iterator就是迭代器的意思,它是一个接口。

什么叫迭代呢?

就是同一件事情,不停地重复着做,用中国的一个古典故事解释,就好比是愚公移山,不停地挖山。

在Java里面就是查询这个元素,查到了接着查询下一个元素,不停地重复。

②既然是不同地重复,那怎么结束?

  • 迭代器中的next方法就是获取当前元素。
  • 迭代器中的hasNext方法是用来判断下一个元素是否存在的:如果存在就将当前元素打印出来;如果不存在就结束循环。

三、增强for循环

利用普通for循环遍历集合有一个特点是需要知道索引值,每循环一次将索引加一就能将所有元素都遍历出来。

而增强for循环的作用就是,就算我不知道索引值,我也能遍历集合。

其本质就是迭代器iterator,所以想使用增强for循环有一个前提条件是需要实现iterator这个接口。

Collection这个接口继承自iterator,故所有的单列集合均能使用增强for循环。

①增强for循环的语法格式:

for(数据类型 变量名:集合对象){}

就可以将其理解成:集合中的所有元素一个一个地赋值给前面的那个变量,所以变量名的数据类型要和集合元素的数据类型一致。

②增强for循环有一个缺点,就是没法修改各个元素。

所以增强for循环和普通for循环如何选择?

  • 如果只是查看集合元素,用增强for;
  • 如果想要修改集合元素,用普通for。

总结:

本文分享自微信公众号 - 刘小爱(liuxiaoai946),作者:刘小爱

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Java】基础07:常量、变量和数据类型

    刘小爱
  • 【Java】基础25:List、Set以及哈希表

    昨天学习了几种简单数据结构,为何要了解数据结构?一方面的原因是因为集合的底层就是与其息息相关的。

    刘小爱
  • 【Javaweb】59:数据库基本操作

    昨天安装了MySQL数据库,也就是说我这台电脑理论上是可以作为数据库服务器的,用户可以连接这台电脑中的数据库。

    刘小爱
  • Python-入门-07-集合

    zishendianxia
  • 爬虫 (十七) 你懂集合? (九)

    最重要的一点就是如果您觉得对您有帮助,希望可以点个在看,或者点一点文章中最下面的广告,给小编我加个鸡腿,毕竟小编写文章也是很辛苦的,非常感谢

    公众号---志学Python
  • Python中的集合

    Python中的集合专门用于存储信息,存储的元素无序且不能重复,它用一对花括号{}定义,数据之间用逗号隔开。

    阿黎逸阳
  • 《闲扯Redis九》Redis五种数据类型之Set型

    Redis 中的 Set 是我们经常使用到的一种数据类型,根据使用方式的不同,可以应用到很多场景中。

    大道七哥
  • How to Config Samba Config With No Password Share

    happy123.me
  • Java中获取类加载路径和项目根路径的5种方法

    https://www.cnblogs.com/franson-2016/p/6163422.html

    XING辋
  • Python列表倒序输出及其效率详解

    这里不讨论Python内置函数sorted(),它的效率比list自带的sort()函数要慢。

    砸漏

扫码关注云+社区

领取腾讯云代金券