博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java的集合
阅读量:6619 次
发布时间:2019-06-25

本文共 1288 字,大约阅读时间需要 4 分钟。

ArrayList

attaylist是java封装的集合框架,底层还是用弹性大小数组来实现的。 transient Object[] elementData;

需要注意的是remove方法

public E remove(int index) {        rangeCheck(index);        modCount++;        E oldValue = elementData(index);        int numMoved = size - index - 1;  //需要移动的元素 大小        if (numMoved > 0)            System.arraycopy(elementData, index+1, elementData, index,                             numMoved);        elementData[--size] = null; // clear to let GC do its work        return oldValue;    }

在删除元素的时候,arrayList会把内部的数组进行移动,所以在删除的时候,从数组的后面进行删除。

在jdk8提供了fastRemove()方法,知识没有了rangecheck和返回olvValue。

这个list主要用了System.arraycopy  方法。

 

LinkedList

是怎么进行查找??

Node
node(int index) { // assert isElementIndex(index); if (index < (size >> 1)) { Node
x = first; for (int i = 0; i < index; i++) x = x.next; return x; } else { Node
x = last; for (int i = size - 1; i > index; i--) x = x.prev; return x; } }

发现是从中间开始,然后一个一个进行线性查找。

hashMap

hash算法如下

static final int hash(Object key) {        int h;        return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);    }

 

 

转载于:https://www.cnblogs.com/xmngg/p/3645102.html

你可能感兴趣的文章
android:json解析库的选择
查看>>
spark 针对决策树进行交叉验证
查看>>
new 一个接口?
查看>>
闲话WPF之九(Dependency属性 [1] )
查看>>
[解惑]JavaScript事件机制
查看>>
DotNET企业架构应用实践-实例架构设计中的业务分层-提取独立的业务层
查看>>
QTP的那些事--连接oracle的方法
查看>>
戴文的Linux内核专题:03 驱动程序【转】
查看>>
解决虚拟机Reason: The file is too large问题
查看>>
EXTJS学习系列提高篇:第二十六篇(转载)作者殷良胜,ext2.2打造Ext.form.ComboBox系列--静态绑定...
查看>>
5个CSS3技术实现设计增强
查看>>
【原】iOS触摸事件深度解析
查看>>
hive中解决中文乱码
查看>>
【译】Core Java Questions and Answers【1-33】
查看>>
桶排序
查看>>
EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
查看>>
asp.net 程序自动提交登陆表单并保持Session及Cookie
查看>>
★Kali信息收集~4.DNS系列
查看>>
spark最新源码下载并导入到开发环境下助推高质量代码(Scala IDEA for Eclipse和IntelliJ IDEA皆适用)(以spark2.2.0源码包为例)(图文详解)...
查看>>
C#/ASP.NET定时任务执行管理器组件–FluentScheduler定时器
查看>>