• Java集合总结


    java集合概述

    对集合的理解

    存储对象的容器,面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,存储对象,集合是存储对象最常用的一种方式。
    集合的出现就是为了持有对象。集合中可以存储任意类型的对象, 而且长度可变。在程序中有可能无法预先知道需要多少个对象, 那么用数组来装对象的话, 长度不好定义, 而集合解决了这样的问题。

    集合和数组的区别

    数组和集合类都是容器
    数组:
    长度开始时必须指定,而且一旦指定,就不能更改
    保存的必须是同一类型的元素
    使用数组进行增加、删除元素的示意代码-比较麻烦
    集合:
    可以动态保存多个对象,使用方便
    提供了一系列方便的操作对象的方法,add remove set get等
    使用集合添加、删除新元素的示意代码-简洁

    集合的分类

    Java 集合可分为 Collection 和 Map 两种体系
    collection 接口有两个重要的子接口,list set ,他们的实现子类都是单列集合
    map接口的实现子类 是双列集合存放的k-v
    在这里插入图片描述
    在这里插入图片描述

    collection接口和常用方法

    接口实现类的特点:

    • collection实现子类可以存放多个元素,每个元素可以是object
    • 有些collection的实现类,可以存放重复的元素,有些不可以
    • 有些collection的实现类,有些是有序的(list),有些是无序的(set)
    • collection接口没有直接的实现子类,是通过它的子接口set和list实现的

    collection接口的常用方法

    • add:添加单个元素
    • remove:删除指定元素
    • contains:查找元素是否存在
    • size:获取元素个数
    • isEmpty:判断是否为空
    • clear:清空
    • addAll:添加多个元素
    • containsAll:查找多个元素是否都存在
    • removeAll:删除多个元素

    遍历方式:

    • Iterator迭代器

    所有实现了collection接口的集合类都有一个Iterator()方法,用来返回一个Iterator接口的对象,即返回一个迭代器
    Iterator仅用来遍历结合,iterator本身并不存放对象

    在这里插入图片描述

    1. 增强for循环

    可以替代迭代器,增强for循环就是简化版的迭代器,本质一样,只能用于遍历集合或者数组

    list

    list接口是collection接口的子接口
    list集合类中元素有序(即添加顺序和取出顺序一致)可以去重复
    list集合中每个元素都有对应的顺序索引,支持索引
    list容器中的每个元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素

    接口方法

    在这里插入图片描述

    实现类和扩容

    在这里插入图片描述

    Vector和ArrayList比较

    ArrayList和LinkedList比较

    在这里插入图片描述

    如何选择ArrayList和LinkedList

    • 如果改查的操作多,选择ArrayList
    • 如果增删的操作多,选择LinkedList
    • 一般来说,在程序中,80%-90%的操作都是查询,因此大部分情况下会选择ArrayList
    • 在一个项目中,根据业务灵活选择,也可以这样 ,一个模块使用的是ArrayList,另外一个模块是LinkedList,也就是说,要根据业务来进行选择

    set

    接口方法和list接口方法一样,遍历方式和collection遍历方式一样。

    1、存储元素无序,即存元素和取元素的顺序可能不一致,但第一次遍历和最后一次遍历取出元素的顺序是不变的
    2、无索引,不能使用for循环遍历
    3、存储元素不重复
    4、遍历方式
    a:迭代器
    b:增强for

    实现类和扩容

    在这里插入图片描述
    在这里插入图片描述

    map

    在这里插入图片描述

    接口常用方法

    put:添加
    remove:根据键删除映射关系
    get:根据键获取值
    size:获取元素个数
    isEmpty:判断个数是否为0
    clear:清除
    containsKey:查找键是否存在

    接口实现类特点

    • Map和collection并列存在,用于保存具有映射关系的数据
    • Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中
    • Map中的key不允许重复,原因和HashSet一样
    • Map中的value可以重复
    • Map 中的key可以为null,value也可以为null,注意key为null只能有一个,value为null可以有多个
    • 常用String类作为Map的key
    • key与value之间存在单向一对一的关系,即通过指定的key总能找到对应的value

    接口实现类

    在这里插入图片描述

    在这里插入图片描述

    Hashtable和HashMap的对比

    在这里插入图片描述

    HashMap和TreeMap存储元素不重复对比

    HashMap存储元素是根据equals对比元素是否相等来决定的、
    TreeMap存储元素不重复是根据compare,自定义规则来决定的

    集合选型规则

    在这里插入图片描述

    collections工具类

    Collections是一个操作Set List Map 等集合的工具类
    Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    【Nginx】nginx隐藏版本号
    JavaScript如何解决单线程缺陷——webWorker
    Scala 基础 (五):面向对象(上篇)
    大咖云集,智慧碰撞|第 18 届 CLK 大会完整议程揭晓(内附报名通道)
    【Linux】tmux文章索引
    你不得不知的MYSQL优化——索引下推
    电磁场的高效半解析传播技术
    C++项目实战——基于多设计模式下的同步&异步日志系统-①-项目介绍
    乐趣国学—品读《弟子规》中的“余力学文”之道
    算法的时间复杂度和空间复杂度
  • 原文地址:https://blog.csdn.net/Laura__zhang/article/details/126611439