目录
一. Collection基本介绍
(1) Collection 是集合结构层次中的根接口.
(2) Collection用于存储和组织一组对象 (这些对象也称为Collection的元素).
[注]: 这些对象可以是不同类的对象.
(3) 一些Collection用于存放可重复, 有序的元素(List); 另一些Collection用于存放不可重复, 无序的元素(Set).
二. Collection中的方法及其使用
通过查看文档我们可以看到, Collection主要有以上几种方法. 我把其中比较重要的几个方法勾选了出来. 这些我们要重点熟悉掌握.
下面我们通过代码简单演示一下Collection接口的使用.
首先我们需要创建一个对象, 由于Collection是一个接口, 所以它本身不能实例化, 我们用它的派生类ArrayList来创建一个Collection对象.
[注]: 这里父类引用指向了子类对象, 所以这里就是一个"向上转型", 这里的collection对象只能调用父类Collection中的方法, 不能调用ArrayList中特有的方法.
1. 添加元素
(1) add( )
调用 add() 方法 添加单个元素
Java中, 当我们调用 System.out.println() 方法时打印一个对象时, 实际上是在调用该对象的toString()方法. toString()方法默认返回该对象的类名和hashCode, 但是这个东西通常没什么用. 所以很多类就重写了toString()方法, 返回一个更具描述性的字符串. 这里的ArrayList类就重写了toString()方法.
所以, 这里打印Collection对象时, 就会打印出一个字符串.
(2) addAll()
调用 addAll() 方法, 参数传递一个集合, 作用是添加另一集合中的所有元素.
如上述代码, 将collection1添加到collection中. 结果如下:
2. 删除元素
(1) remove()
调用 remove() 方法, 作用是删除单个元素.
(2) removeAll()
使用 removeAll() 方法. 参数传递一个集合, 作用是删除某个集合中包含在其他集合中的元素
上述代码表示的操作就是在collection中删除collection1中的所有元素. 结果如下:
(3) retainAll()
使用 retainAll() 方法, 参数传递一个集合, 作用是保留两个集合中的交集部分, 删除其他元素.
如上述代码, 保留collection和collection1的交集. 结果如下:
3. 遍历元素
(1) 使用 for - each 遍历
(2) 使用迭代器遍历
迭代器 (Iterator) 是Java提供的, 一种专门用来遍历集合的方式.
我们首先需要创建一个迭代器对象. 如何创建呢? 我们知道Collection继承了Iterator类, 而且Collection中有一个iterator()方法, 它的作用就是返回当前集合的迭代器.
所以我们第一步调用Collection的iterator()方法, 创建一个迭代器.
好, 那么有了迭代器对象之后, 下一步该如何遍历呢? --> 调用迭代器对象it的方法.
好, 如上图, Iterator类主要有 hasNext() 方法, next() 方法, remove() 方法. hasNext() 用来判断是否有下一个可迭代的元素, 如果有, 返回true. next() 用来返回下一个元素. remove() 用于删除迭代器刚刚返回的元素.
如上述代码, 如果当前集合的迭代器有下一个可迭代元素, 则打印下一个可迭代元素. 结果如下:
[注]: 能否边遍历变删除?
如果我们想边遍历边删除可以吗? 我们来尝试一下:
若使用 Iterator 的 remove() 方法:
若使用 Collection 的 remove() 方法:
我们可以看到, 用 Iterator 的 remove() 方法就能正常删除, 而使用 Collection 的 remove()方法 就不能正常删除. 这是因为 Iterator 的 remove() 方法保证了状态的一致性, 是安全的删除; 而除了使用迭代器Iterator删除外的其他删除都无法保证迭代的一致性, 是不安全的.
因此, 若我们想在迭代的同时删除底层集合中的元素, 就只能调用 Iterator 的 remove() 方法.
4. 判断
(1) contains()
contains(Object o) 方法用来判断Collection集合中是否包含某一元素. 代码演示如下:
(2) containsAll()
containsAll(Collection<?> c) 方法, 参数传递一个集合, 用来判断当前集合是否包含另一集合中的所有元素. 代码演示如下:
(3) isEmpty()
isEmpty() 方法用来判断集合是否为空, 返回一个boolean类型的值.
好了, 本篇文章就介绍到这里啦, 大家如果有疑问欢迎评论, 如果喜欢小编的文章, 记得点赞收藏~~