Java集合体系结构

Java集合体系结构

  在编程时,往往需要我们集中存放多个数据,之前我们习惯于使用数组来保存多个对象,但由于数组长度固定,一旦在初始化数组时指定了数组的长度,那么这个数组的长度就不能再改变。当需要保存数量变化的数据时,数组就不能再满足我们的需求。于是Java为我们提供了集合类。
  集合类的分类方法有很多,既可以按照其中元素的类型进行分类,也可以按应用在集合元素上的方法进行分类,常见的集合类有:
  List集合:这是一组有序元素的集合,可以使用索引或顺序访问其中的元素。也称之为线性表。
  Set集合:这是一组无序元素的集合,集合中的元素不允许重复。
  Map集合:这是一组存放<键,值>对元素的集合,每个元素都由一个唯一的键和相对应的值组成。这些键不允许重复,但值可以重复。也称之为映射。
  集合类也可分为两种体系,一种是Collection接口的对象的集合,又称单列集合;另一种是Map接口的键值对的集合,也称双列集合。如下图所示。
Java集合体系结构图
  Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
  所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。
  如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,又称迭代器。该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。
  Iterator,也称之为迭代器,是一种允许用户以顺序方式高效访问集合元素的一种特殊对象。使用迭代器可以简化遍历集合元素的过程。
  Java定义了Iterator接口,描述了在遍历元素时所需要使用的方法。而具体Iterator接口的实现则由各集合类根据自身结构特点来完成,对于用户来说不需要了解Iterator的实现原理,只要获得相关集合的Iterator对象,就可以方便地进行数据遍历。
  Iterator接口的定义很简单,只提供了2个方法:hasNext()方法和next()方法。通过hasNext()方法判断是否遍历到集合的最后一个元素;利用next()方法返回迭代器指向的下一个元素。
  Java提供的ListIterator接口扩展了Iterator接口的功能,定义了逆向遍历的方法,实现List接口的类均实现了ListIterator迭代器。
  集合类对Iterator迭代器的使用很容易,只需要相关集合对象调用Iterator()方法就可以得到当前集合的迭代器对象。
  典型的用法如下所示。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Example {
    public static void main(String[] args) {
        //创建一个ArrayList集合
        List<String> list = new ArrayList<String>();
        list.add("星期一");
        list.add("星期二");
        list.add("星期三");
        list.add("星期四");
        list.add("星期五");
        list.add("星期六");
        list.add("星期日");

        //使用迭代器遍历ArrayList集合
        Iterator<String> listIt = list.iterator();
        while (listIt.hasNext()) {
            System.out.println(listIt.next());
        }
    }
}

运行结果如下
在这里插入图片描述

发布了43 篇原创文章 · 获赞 3 · 访问量 1437

猜你喜欢

转载自blog.csdn.net/qq_43690560/article/details/95376098