ArrayList和LinkList相同点和区别:

共性:

都实现了List接口,都是list的实现类,处理list集合操作。

区别:

ArrayList:底层存储结构是数组,每个元素都有index标记元素所在位置,所以执行查询的时候速度比较快。但执行插入或删除时因为要移动这个元素后面所有元素的index,所以速度比较慢。而且但数组长度大于初始化长度时,每增加一个数组元素都需要扩容。

LinkList:底层存储结构是链表,和车链一样,一个元素只需要记录这个元素前面的那个元素和后面的那个元素,所以执行插入或删除时也只要改变前后两个元素的记录即可,因此比较快。但查询需要挨个查,因此比较慢。

Hashmap和hashtable共性和区别:

共性:

底层实现都是hash结构,既数组加链表。以长度为16的哈希结构为例。每个元素的key会除于16得到的余数1 2 3...16,所以排列的位置也是1 2 3...16,以key余数是1的所有元素为例,里面的元素存储结构是链表结构。

区别:

Hashmap继承AbstractMap类,hashtable继承Dictionary

Hashmap是非线程安全,hashtable是线程安全,ConcurrentHashMap是hashtabale的替代,拓展性比hashtable好。

Hashmap的key和value都可以为null,Hashtable不行

Hashtable被弃用的原因:

hashtable继承了被弃用的父类Dictionary

在单线程下hashmap效率更高,多线程下有concurrentHashmap替代hashtable

Java集合实现类区别与联系的更多相关文章

  1. Java集合---Array类源码解析

    Java集合---Array类源码解析              ---转自:牛奶.不加糖 一.Arrays.sort()数组排序 Java Arrays中提供了对所有类型的排序.其中主要分为Prim ...

  2. 7.Java集合-Arrays类实现原理及源码分析

    Java集合---Arrays类源码解析  转自:http://www.cnblogs.com/ITtangtang/p/3948765.html 一.Arrays.sort()数组排序 Java A ...

  3. Java集合框架类

    java集合框架类图 Collection接口(List.Set.Queue.Stack):

  4. Java集合框架类图

    Java集合框架的类图 http://blog.toruneko.net/28

  5. 3.1 JAVA集合框架以及区别

    涉及的参考链接:https://www.runoob.com/java/java-collections.html,http://how2j.cn/k/collection/collection-ar ...

  6. Java集合Stream类filter的使用

    之前的Java集合中removeIf的使用一文写了使用removeIf来实现按条件对集合进行过滤.这篇文章使用同样是JDK1.8新加入的Stream中filter方法来实现同样的效果.并且在实际项目中 ...

  7. Java集合常用类特点整理

    集合的结构如下图所示: 集合的两个顶级接口分别为:Collection和Map Collection下有两个比较常用的接口分别是List(列表)和Set(集),其中List可以存储重复元素,元素是有序 ...

  8. Java:集合工具类-Collections

    Java.util.Collections 集合框架工具类Collections,其方法都是静态的,本身没有构造函数. 常见方法: static <T extends Comparable< ...

  9. Java集合---Arrays类源码解析

    一.Arrays.sort()数组排序 Java Arrays中提供了对所有类型的排序.其中主要分为Primitive(8种基本类型)和Object两大类. 基本类型:采用调优的快速排序: 对象类型: ...

随机推荐

  1. Mysql存储过程入门介绍

    delimiter //一般情况下MYSQL以:结尾表示确认输入并执行语句,但在存储过程中:不是表示结束,因此可以用该命令将:号改为//表示确认输入并执行. 一.创建存储过程 1.基本语法: crea ...

  2. 内存分析工具-MAT(Memory Analyzer Tool)

    内存分析工具-MAT(Memory Analyzer Tool) 首先查看如下代码,main函数中有一个成员变量map,map里被循环放入对象Hanson,hanson持有姓名和age还有friend ...

  3. js 前端有消息了 声音提示给用户

    前言:工作中有需求,在数据变更有变更时采用声音提示给用户,这里记录一下.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9936180.html 网站地址:我的个 ...

  4. 初学HTML-7

    表单中的一些标签 label标签:让文字和输入框进行绑定,即,点击文字,输入框可以开始输入(默认文字和输入框没有关系,不会聚焦) 格式:<form action=""> ...

  5. 垂直水平居中总结css

    水平居中:给div设置一个宽度,然后添加margin:0 auto属性 div{ width:200px; margin:0 auto; } 让绝对定位的div垂直水平居中一(大盒子设置个相对定位) ...

  6. vue中使用axios(异步请求)和mock.js 模拟虚假数据

    一.使用axios 1.安装 npm install --save axios 2.引用 import Axios from 'axios' Vue.prototype.Axios = Axios 二 ...

  7. mysql插入表数据中文乱码问题解决方案

    一.问题 开发中遇到将其它数据库数据插入到mysql数据库表中一直会报类似如下错误: Incorrect string value: '\xE6\x88\x91' for column 'name' ...

  8. 去除git版本控制

    命令:find . -name ".git" | xargs rm –Rf linux $ find . -type d -iname '__pycache__' -exec rm ...

  9. maven管理项目的特点

    Maven介绍 我们在开发项目的过程中,会使用一些开源框架.第三方的工具等等,这些都是以jar包的方式被项目所引用,并且有些jar包还会依赖其他的jar包,我们同样需要添加到项目中,所有这些相关的ja ...

  10. springboot中使用mybatis显示执行sql

    springboot 中使用mybatis显示执行sql的配置,在properties中添加如下 logging.你的包名=debug 2018-11-27 16:35:43.044 [DubboSe ...