• 6.1 集合概述


    1. 集合概述

    1.1. 引入

    在前面的章节中我们学习了数组,数组可以存储多个对象,但是数组只能存储相同类型的对象,如果要存储一批不同类型的对象,数组便无法满足需求了。为此,Java提供了集合,集合可以存储不同类型的多个对象。本章将针对Java中的集合类进行详细地讲解。

    1.2. 集合概念

    为了存储不同类型的多个对象,Java提供了一系列特殊的类,这些类可以存储任意类型的对象,并且存储的长度可变,被统称为集合。集合可以简单理解为一个长度可变,可以存储不同数据类型的动态数组。集合都位于java.util包中,使用集合时必须导入java.util包。

    1.3. 集合体系核心架构

    集合体系核心架构图如下所示,列出了Java开发中常用的一些集合类,其中,虚线框里都是接口类型,实线框里是具体的实现类。

    1.4. 集合中的核心接口

    集合中的核心接口如下表所示。

    接口

    描述

    Collection

    集合中最基本的接口,一般不直接使用该接口

    List

    Collection的子接口,用于存储一组有序、不唯一的对象,是集合中常用的接口之一

    Set

    Collection的子接口,用于存储一组无序、唯一的对象

    Map

    用于存储一组键值对象,提供键到值的映射

    2. Collection接口

    Collection接口是Java单列集合中的根接口,它定义了各种具体单列集合的共性,其他单列集合大多直接或间接继承该接口,Collection接口的定义如下所示:

    1. public interface Collection extends Iterable{
    2. //Query Operations
    3. }

    Collection接口的常用方法如下。

    方法声明

    功能描述

    boolean add(Object o)

    向集合中添加一个元素

    boolean addAll(Collection c)

    将指定集合c中的所有元素添加到本集合中

    void clear()

    删除集合中的所有元素

    boolean remove(Object o)

    删除集合中指定的元素

    boolean removeAll(Collection c)

    删除当前集合中包含集合c中的所有元素

    boolean isEmpty()

    判断集合是否为空

    boolean contains(Object o)

    判断集合中是否包含某个元素

    boolean containsAll(Collection c)

    判断集合中是否包含指定集合c中的所有元素

    Iterator iterator()

    返回集合的的迭代器(Iterator),迭代器用于遍历该集合所有元素

    int size()

    获取集合元素个数

    2.1. List接口

    List接口继承自Collection接口,List接口实例中允许存储重复的元素,所有的元素以线性方式进行存储。在程序中可以通过索引访问List接口实例中存储的元素。另外,List接口实例中存储的元素是有序的,即元素的存入顺序和取出顺序一致。

    List作为Collection集合的子接口,不但继承了Collection接口中的全部方法,而且还增加了一些根据元素索引操作集合的特有方法。List接口的常用方法如下表所示。

    方法声明

    功能描述

    void add(int index,Object element)

    将元素element插入List的index索引处

    boolean addAll(int index,Collection c)

    将集合c所包含的所有元素插入到List集合的index索引处

    Object get(int index)

    返回集合index索引处的元素

    Object remove(int index)

    删除index索引处的元素

    Object set(int index, Object element)

    将index索引处元素替换成element对象,并将替换后的元素返回

    int indexOf(Object o)

    返回对象o在List中第一次出现的位置索引

    int lastIndexOf(Object o)

    返回对象o在List中最后一次出现的位置索引

    List subList(int fromIndex, int toIndex)

    返回从索引fromIndex(包括)到 toIndex(不包括)处所有元素集合组成的子集合

    2.2. Set接口

    Set接口也继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充。与List接口不同的是,Set接口中元素是无序的,并且都会以某种规则保证存入的元素不出现重复。

    Set接口常见的实现类有3个,分别是HashSet、LinkedHashSet、TreeSet。其中,HashSet根据对象的哈希值来确定元素在集合中的存储位置,具有良好的存取和查找性能;LinkedHashSet是链表和哈希表组合的一个数据存储结构;TreeSet则是以二叉树的方式存储元素,它可以对集合中的元素进行排序。

    3. Map接口

    Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value,键和值对象之间存在一种对应关系,称为映射。Map中键对象Key不允许重复,访问Map集合中的元素时,只要指定了Key,就能找到对应的Value。

    Map接口常用方法如下所示。

    方法声明

    功能描述

    void put(Object key, Object value)

    将指定的值和键存入到集合中,并进行映射关联

    Object get(Object key)

    返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null

    void clear()

    移除所有的键值对元素

    V remove(Object key)

    根据键删除对应的值,返回被删除的值

    int size()

    返回集合中的键值对的个数

    boolean containsKey(Object key)

    如果此映射包含指定键的映射关系,则返回 true。

    boolean containsValue(Object value)

    如果此映射将一个或多个键映射到指定值,则返回 true

    Set keySet()

    返回此映射中包含的键的Set集合

    Collection values()

    返回此映射中包含的值的Collection集合

    Set>entrySet()

    返回此映射中包含的映射关系的Set集合

    4. 集合遍历

    Iterator接口是Java集合框架中的一员,但它与Collection、Map接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(遍历)Collection中的元素,通常情况下Iterator对象也被称为迭代器。

    迭代器对象在遍历集合时,内部采用指针的方式来跟踪集合中的元素。迭代器迭代元素过程如下图所示。

  • 相关阅读:
    OJ第三篇
    【考研英语语法】口语语法
    eKuiper Newsletter 2022-08|多平台插件一键安装,使用更便捷
    XUbuntu22.04之如何找到.so库所在的软件包?(二百一十六)
    【应用层协议】初始Http,fiddler的使用
    【java】idea可以连接但看不到database相关的files
    GIT使用学习笔记 远程仓库篇
    原料厂与烧结工艺
    JavaScript——创建对象的三种方法
    AJAX——AJAX的异步与同步、AJAX代码封装
  • 原文地址:https://blog.csdn.net/lv_soso/article/details/134446618