ArrayList底层实现数组,这是ArrayList get()方法的源码,底层是数组

根据下标返回在数组中对应的位置 ,查询快,插入慢

// Positional Access Operations

    @SuppressWarnings("unchecked")
E elementData(int index) {
return (E) elementData[index];
}

LinkList的底层实现是双向链表,插入块,查询慢 ,下面是其add()方法的源码

可以看出是一双向链表的方式实现的

/**
* Links e as last element.
*/
void linkLast(E e) {
final Node<E> l = last;
final Node<E> newNode = new Node<>(l, e, null);
last = newNode;
if (l == null)
first = newNode;
else
l.next = newNode;
size++;
modCount++;
}

 HahsMap的底层实现是数组加链表  比如我new一个新的map Map<String,Integer> map=new HashMap<String,Integer>();

 调用put的方法添加,保存的原理是,new一个数组,得出key的hashCode()码,其实就是一串数字,将这个数字当坐下标,根据这个下标将其放到对应的

 位置。问题来了,key的hashCode()码可能会重复,所以,一个下标的位置上会放入几个不同的键值对,也即是map值,这样的话就用到了链表结构,

 之所以这么复杂还是为了提升性能,以为键值对无法像单纯的以数组实现的容器一样,那么方便的进行各种操作,这样可大大提高效率。

ArrayList,LinkList,HashMap的更多相关文章

  1. java源码之List(ArrayList,LinkList,Vertor)

    1,List概括 List的框架图 (01) List 是一个接口,它继承于Collection的接口.它代表着有序的队列. (02) AbstractList 是一个抽象类,它继承于Abstract ...

  2. Android——ArrayList 、LinkList、List 区别 & 迭代器iterator的使用 & HashMap、Hashtable、LinkedHashMap、TreeMap

     ArrayList .LinkList.List 区别 & 迭代器iterator的使用 & HashMap.Hashtable.LinkedHashMap.TreeMap 一.几个 ...

  3. Java:List,ArrayList和LinkList的区别

    1.大学数据结构中ArrayList是实现了基于动态数组的数据结构,LinkList基于链表的数据结构 2.对于随机访问get和set,ArrayList优于LinkList,因为LinkedList ...

  4. Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法

    Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayL ...

  5. array,vertor,arraylist,hashable,hashmap等几个易混淆概念的区别

    Array可以存放Object和基本数据类型,但创建时必须指定数组的大小,并不能再改变, Vertor是放的Object. Vertor一维,Hashmap/Hashtabe二维: Vertor/Ar ...

  6. 【转】java 容器类使用 Collection,Map,HashMap,hashTable,TreeMap,List,Vector,ArrayList的区别

    原文网址:http://www.360doc.com/content/15/0427/22/1709014_466468021.shtml java 容器类使用 Collection,Map,Hash ...

  7. Java学习之模拟纸牌游戏,List的ArrayList,Map的HashMap,重写Collections类的sort方法对指定类进行通过特定属性排序,输入异常处理等的学习

    首先放上测试效果图 设计框架 具体的代码实现 创建玩家类 public class Player implements Comparable<Player>{ int id; String ...

  8. [Java语言] HashMap,HashSet,Hashtable,Vector,ArrayList 的关系 <转>

    这么几个比较常用的但是比较容易混淆的概念同出于 java.util 包.本文仅作几个类的浅度解析. (本文基于JDK1.7,源码来自openjdk1.7.) ├── Collection │ ├── ...

  9. List和ArrayList,LinkList的区别

    接口 List<E> 是一个接口: ArrayList<E> 是一个类:是一个实现了List接口的类,因此可以List里面定义的所有的方法都实现了. 1.ArrayList是实 ...

随机推荐

  1. MVC页面加载会多次请求后台问题

    最近调试代码的时候发现有些控制器有代码走两遍的情况,后台发现是前端url或者herf标签导致请求了mvc路由,具体案例如下: 这两种路径为空的时候都会导致请求mvc路由重复请求后台方法

  2. 数组Byte [] 和 string 相互转换

    using System; using System.Collections.Generic; using System.Text; namespace NET.MST.Fourth.StringBy ...

  3. MVC 登陆鉴权

    public ActionResult Login(string data) { var _params = JsonConvert.DeserializeAnonymousType(data, ne ...

  4. Sqoop 遇到的问题

    1.   想用 sqoop 增量的方式导入到 hive.运行下面的命令: sqoop import --connect jdbc:mysql://192.168.7.159:3306/test --u ...

  5. 入参为json类型的接口测试示例

    一.接口文档内容 二.使用postman(入参为json类型) 如下部分内容即是json串: { "name":"刘星", "grade": ...

  6. 【bzoj3796】Mushroom追妹纸 hash/sa+kmp+二分

    Description Mushroom最近看上了一个漂亮妹纸.他选择一种非常经典的手段来表达自己的心意--写情书.考虑到自己的表达能力,Mushroom决定不手写情书.他从网上找到了两篇极佳的情书, ...

  7. 最新cenos执行service httpd restart 报错Failed to restart httpd.service: Unit not found.

    原来是需要将Apache注册到Linux服务里面啊!注册Apache到Linux服务在Linux下用源代码方式编译安装完Apache后,启动关闭Apache可以通过如下命令实现: /usr/local ...

  8. [转]Why you shouldn't use set (and what you should use instead)

    Why you shouldn't use set (and what you should use instead) --- stl::set和sorted ector对比Matt Austern ...

  9. [HNOI2004]树的计数 BZOJ 1211 prufer序列

    题目描述 输入输出格式 输入格式: 输入文件第一行是一个正整数n,表示树有n个结点.第二行有n个数,第i个数表示di,即树的第i个结点的度数.其中1<=n<=150,输入数据保证满足条件的 ...

  10. 动态数组 - vector

    #include <iostream> #include <vector> // 头文件 using namespace std; int main() { vector< ...