集合框架(一)

前言

本篇文章是集合框架的第一篇,主要内容为:集合框架介绍、集合框架体系以及所共有的功能、迭代器。文章重点内容会用红色字体标识。

正文

集合框架概述?

集合从本质上来说其实就是一种容器,关于容器,我们之前已经学过数组、StringBuffer等... ...那为什么会出现"集合"这门技术呢?Java是一门面向对象语言,"对象"其实也是一种容器,它的内部也封装了数据。当对象越来越多之后,我们需要用一个容器来将这些对象存储起来,集合其实就是一种存储对象的对象。

集合中实际上存储的是对象的地址,由于集合有很多种,所以这些地址可以按照任意顺序进行排列。

可能有人会问数组也可以存储对象,那么数组与集合的区别是什么呢?

  • 集合的长度是可变的,而数组是固定长度的。

  • 集合中不可以存储基本数据类型值,而数组可以。

集合框架体系和共性功能?

由于多种集合内部的数据结构不同,所以存在着多种具体容器,将它们的共性不断地向上抽取就形成了集合框架体系。如下图所示:

由上图我们可以得知:Collection接口是框架体系的顶层接口。那么它内部的常用方法有哪些呢?将它们分为如下几类:

  • 添加

boolean add(Object obj);
boolean addAll(Collection coll);

  • 删除
// 注:删除操作都会改变集合的长度

boolean remove(object obj);     
boolean removeAll(Collection coll);
void clear();

  • 判断

boolean contains(object obj);
boolean containsAll(Colllection coll);
boolean isEmpty();

  • 获取

int size();
Iterator iterator();    // 该方法下面会详细说明

  • 其他

boolean retainAll(Collection coll);    // 注:该方法与removeAll()功能相反
Object[] toArray();

迭代器的使用和原理?

迭代器其实就是一种取出集合中元素的方式,具体使用方式见下:


import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Test {

    public static void main(String[] args) {
        Collection coll = new ArrayList();
        coll.add("abc1");
        coll.add("abc2");
        coll.add("abc3");
        coll.add("abc4");
		System.out.println(coll);

        for(Iterator it = coll.iterator(); it.hasNext(); ){
            System.out.println(it.next());
        }
    }
}

我们可以注意到iterator()返回的是一个迭代器对象。上面说过集合框架体系有很多具体的集合容器,由于每一种容器内部的数据结构都不同,所以该对象必须依赖于具体容器,也即是说该迭代器对象是在容器中进行内部实现的(内部类)。总结来说:Iterator接口就是对所有的Collection容器进行元素取出的公共接口。

原文地址:https://www.cnblogs.com/syhyfh/p/12521929.html