Logo

郎哥编程

Collection接口

2019-12-26 237

Collection接口作为集合的一个根接口,它提供了对集合对象进行基本操作的通用接口方法,接口在Java 类库中有很多具体的实现。其意义是为各种具体的集合提供了最大化的统一操作方式。

JDK不提供此接口的任何直接实现,而是提供更具体的子接口,具体有Set接口、List接口、Queue接口。Set接口存放的元素是无序的且不包含重复元素(对象);List接口存放的元素是有序的且允许有重复的元素;Queue接口存放的元素顺序符合先入先出的规则,和我们日常生活中的排队模型很类似。Collection接口层次如下图所示:

image.png

Collection接口层次

Collection接口定义了一组对象和它的子类需要实现的 15 个方法,下面分类列出并说明。

1、容器类中添加、删除的操作方法

● boolean  add(Object  obj)

将Object对象添加到collection。

● boolean  remove(Object  obj)

如果collection中有与obj相匹配的对象,则删除该对象。

2、容器类中元素查询的操作方法

● int  size()

返回当前集合中元素的数量。

● boolean  isEmpty()

从当前collection中查询是否包含元素。

● boolean  contains(Object  obj)

查找此collection是否包含指定的元素。

● boolean  contains(Collection  collec)

判断此Collection是否包含指定Collection中所有元素。

● Iterator  iterator ()

返回此Collection上的迭代器,用来访问该Collection中各个元素。

● boolean  contains All(Collection  collec)

判断Collection是否含有collec中的所有元素。

3、容器类中的组操作方法

● boolean  addAll(Collection  collec)

将指定的collec中的所有元素添加到当前Collection。

● void  clear()

删除当前Collection中的所有元素。

● void  removeAll(Collection  collec)

从当前Collection中删除collec中的所有元素。

● void  retainAll(Collection  collec)

从当前Collection中删除collec中不包含的元素。

4、转换操作,用于集合与数组间的转换

● Object[]  toArray()

将当前Collection转成对象数组

● Object[]  toArray(Object[]  a)

返回一个内含当前Collection所有元素的array。

在Collection中并未提供get()方法获取元素。如果要遍历Collection中的元素,一般要采用Iterator迭代器,可以通过Iterator迭代器遍历Collection各个对象元素。

5、Iterator接口(迭代器)中定义的方法如下:

● Iterator  Iterator ()

返回集合的迭代器,用于遍历集合中对象。

● boolean  hasNext()

判断当前迭代器是否有下一个元素。

● Object  next()

返回当前迭代器指向的对象元素,并指向下一个对象元素

● void  remove()

删除当前迭代器所指向的元素,一般和next方法一起用,这时候的作用就是删除next方法返回的元素。

Collection是接口类,不能实例化为对象,但可以实例化Collection接口的实现类,并把实现类的对象引用向上转型为Collection接口类型。

例如:

Collection  list = new ArrayList();

在上面的例句中,ArrayList是Collection接口的实现类,代码将ArrayList的实例化对象赋值给Collection接口类型的变量list,此时可以使用list来存储继承于Object类的实例化对象。

案例1:建立CollectionTest类,实例化ArrayList对象,并将对象引用赋值给Collection类型的list变量,此时的list变量的值指向ArrayList的对象引用,因此list变量也可以称为list集合,使用list集合添加String对象,最后输出list集合中的String对象。

新建项目PCoreUnit5,在PCoreUnit5项目新建collection包,在collection包下新建CollectionTest类。代码如下:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
 
/** 
* @ClassName: CollectionTest 
* @Description: 集合框架(Collection接口)案例1
* @author 编程训练营 
* @date  
* 
*/
 
public class CollectionTest {
 
    /** 
    * @Title: main 
    * @Description: Java程序入口main方法 
    * @param @param args    参数 
   
    * @return void    返回类型 
    * @throws 
    */
 
    public static void main(String[] args) {
       // 实例化ArrayList对象
        Collection  list = new ArrayList();
       // 添加String对象到list集合
       list.add("编程语言");
       list.add("java");
       list.add("Python");
      
       // 获取list集合的迭代器
        Iterator iterator = list.iterator();
       // 使用while循环迭代集合中对象
       while (iterator.hasNext()) {
           String  str =  (String)iterator.next();
           System.out.println(str);
       } 
 
    }
 
}

CollectionTest类的main方法中声明了Collection类型的list变量,实例化的ArrayList集合对象向上转型并赋值给list,list集合先后添加三个String对象。最后用Iterator迭代器遍历集合存储的所有String对象。集合中的对象类型都为Object类型,从集合中取得对象,必须把它转换成原来的类型。

Collection接口、ArrayList类、Iterator类都在APL库java.util包内,需要使用import语句导入这三个类。

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论