【集合简介】

单列集合collection总接口

 * 分支(实现了collection接口)...(list、set)

 * list有索引值、可以重复、有序

 * 实现了list接口

 * arraylist:底层数据结构是数组:查询快增删慢

 * 数组直接通过索引值去找元素所以查询快

 * 比如数组较长,你删第一个元素后面的每个元素都要向前挪一位。

 * 动的元素较多耗费时间空间较多所以增删慢,添加也要挪

 * 

 * linkedlist:底层数据结构是链表:查询慢增删快

 * 双向链表前面是上一个元素的地址值,后面是后一个元素的地址值。

 * 增删看下面图,动的空间较少所以快,增加同理6d48fe10e0ad4e90ba9ebf6e655d3434.png

 

* 查询也要根据后一个地址值一个一个去查询,比较耗费空间所以慢

 * vector(较少使用)和arraylist类似

 * 

 * set没有索引值、不可以重复

 * set新增过程(不可重复)

 * 

计算新增元素的哈希值是十进制的地址值调用hashcode();object父类方法

通过计算哈希值数值程度去确定元素新增的索引之位置,

如果没有元素 新增,

如果有元素,判断是否相同,如果相同,不新增

如果不相同,挂到最后一个元素下面

判断的标准:

比较哈希值是否相同&&(地址值||equals相同)

 * hash set(无序)底层数据结构是哈希表 。 底层是hash map

 * linked hash set(有序)底层数据结构是链表+哈希表。底层是linkedhash map

 * tree set(可排序)底层数据结构是红黑树。底层是three map

 * Map双列集合总接口

 * 特点:一个元素是有一个K和一个V组成。K和V可以是于任意引用数据类型

 * K不能重复,判断重复的标准和set集合重复判断的标准一致

 * 常用实现类:

 * hashmap 无序底层是哈希值,线程不安全(没加synchronized代码块)所以效率低,K、V可以为null

 * linkedhash map 有序底层是链表加哈希表

 * three map 可排序底层是红黑树

 * hashtable 线程安全(加了synchronized代码块)需要更多空间所以效率低,K、V不能是null

 * 数据结构

 * 栈 :先进后出,后进先出【图片】

4a38c77a622041b5bebc80c328688fb6.png

 

* 队列 :先进先出【图片】

5c93ae3ed8ac4e61a4f296a406d602f0.png* 数组:查询快,根据索引值获取元素,增删慢数组必须是一块连续的空间【图片】

4406be60173949d09daf933a00e70b15.png* 链表:查询慢,增删快【图片】

632b77728ad64963bba982003096cf1d.png* 红黑树:查询增删都比较快

 

 

 

 *

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值