【Java】容器篇

java容器的主要分类
在这里插入图片描述

  • Collection接口存储一组不唯一,无序的对象
  • List接口存储一组不唯一,有序(索引顺序)的对象
  • Set接口存储一组唯一,无序的对象
  • Map接口存储一组键值对象,提供key到value的映射
    • key唯一无序
    • value不唯一无序

List
  • 特点:有序,不唯一(可重复)
  • ArrayList:线性表中的顺序表
    • 在内存中分配连续的空间,实现了长度可变的数组
    • 优点:遍历元素和随机访问元素的效率高
    • 缺点:添加和删除需大量移动元素,效率低,按照内容查询效率低
    • add(index, element):需要大量的后移元素,效率低下
  • LinkedList:线性表中双向链表
    • 采用双向链表存储方式
    • 缺点:遍历和随机访问元素效率低下
    • 优点:插入、删除元素效率比较高(但是前提也是必须先低效率查询才行。如果插入删除发生在头尾可以减少查询次数)
    • add(index, element):创建新的节点储存 element,并修改前后两个节点的指针。效率比较高。
  • 到底该使用 ArrayList 还是 LinkedList
    • 随机访问频率高,建议使用 ArrayList
    • 添加、删除操作比较多,建议使用 LinkedList
Set
  • 特点:无序、唯一(不重复)
  • HashSet
    • 采用哈希表存储结构
    • 优点:添加速度快、查询速度快、删除速度快
    • 缺点:无序
  • LinkedHashSet
    • 采用哈希表存储结构,同时使用链表维护次序
    • 有序(添加顺序)
  • TreeSet
    • 采用二叉树(红黑树)的存储结构
      • 二叉树:两个叉
      • 二叉排序树:左子树 < 根 < 右子树
      • 二叉平衡树:首先是一个二叉排序树,并且左右子树的高度差是 0,1,-1
    • 优点:有序(大小顺序),查询速度比 List 快(按照内容查询)
    • 缺点:查询速度没有 HashSet 快

按照内容查询速度的快慢(由慢到快排序)

  1. 线性表
  2. 哈希表
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值