ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦 LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引  但是缺点就是查找非常麻烦 要丛第一个索引开始

Hashtable和HashMap类有三个重要的不同之处。第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。 也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。这就意味着,虽然你可以不用采取任何特殊的行为就可以在一个多线程的应用程序中用一个Hashtable,但你必须同样地为一个HashMap提供外同步。一个方便的方法就是利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个封装的对象来返回。这个对象的方法可以让你同步访问潜在的HashMap。这么做的结果就是当你不需要同步时,你不能切断Hashtable中的同步(比如在一个单线程的应用程序中),而且同步增加了很多处理费用。 

第三点不同是,只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值,那么get()将返回null。如果有必要,用containKey()方法来区别这两种情况。 

一些资料建议,当需要同步时,用Hashtable,反之用HashMap。但是,因为在需要时,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基于一个陈旧的类的,所以有人认为,在各种情况下,HashMap都优先于Hashtable。 

关于Properties  有时侯,你可能想用一个hashtable来映射key的字符串到value的字符串。DOS、Windows和Unix中的环境字符串就有一些例子,如key的字符串PATH被映射到value的字符串C:\WINDOWS;C:\WINDOWS\SYSTEM。Hashtables是表示这些的一个简单的方法,但Java提供了另外一种方法。 Java.util.Properties类是Hashtable的一个子类,设计用于String keys和values。Properties对象的用法同Hashtable的用法相象,但是类增加了两个节省时间的方法,你应该知道。 Store()方法把一个Properties对象的内容以一种可读的形式保存到一个文件中。Load()方法正好相反,用来读取文件,并设定Properties对象来包含keys和values。 注意,因为Properties扩展了Hashtable,你可以用超类的put()方法来添加不是String对象的keys和values。这是不可取的。另外,如果你将store()用于一个不包含String对象的Properties对象,store()将失败。作为put()和get()的替代,你应该用setProperty()和getProperty(),它们用String参数。

转载于:https://www.cnblogs.com/lshblogs/p/4740081.html

hashMap与arrayList,linkedList,hashTable的区别相关推荐

  1. java vector arraylist linkedlist用法与区别

    首先,它们是list的实现类,大致说一下vector arraylist linkedlist的区别. 1.线程安全来讲, vector是线程安全,arraylist linkedlist线程不安全. ...

  2. java中HashMap,LinkedHashMap,TreeMap,HashTable的区别

    java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根 ...

  3. day27 java的集合(5) HashMap集合和与Hashtable的区别

    1.HashMap 1.1基本 1.2哈希表的结构及其实现方法 1.3红黑树 1.4小总结 1.5区别

  4. Vector ArrayList Hashtable HashMap ArrayList LinkedList

    1. Vector & ArrayList 1)  Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的 ...

  5. java:集合(Collection【List(ArrayList Vector LinkedList)、set】、Map【hashMap、treeMap、hashtable、properties】)

    目录 集合的框架体系 一.Collection接口和常用方法 1.1   List接口和常用方法 1.1.1   ArrayList底层结构和源码分析 1.1.2 Vector底层结构 1.1.3 L ...

  6. 分析Vector、ArrayList、Hashtable、HashMap数据结分享一下

    分析Vector.ArrayList.Hashtable.HashMap数据结分享一下 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据 ...

  7. [转]Vector、ArrayList和hashtable hashmap数据结构

    线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以 ...

  8. HashMap 与 HashTable的区别

    1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样.可以用synchronized实现HashMap ...

  9. HashMap和Hashtable的区别--List,Set,Map等接口是否都继承自Map接口--Collection和Collections的区别...

    面试题: 1.HashMap和Hashtable的区别?HashMap:线程不安全,效率高,键和值都允许null值Hashtable:线程安全,效率低,键和值都不允许null值ArrayList代替V ...

最新文章

  1. hdu 2141 Can you find it?
  2. 《iOS 6核心开发手册(第4版)》——2.1节UIControl类
  3. HDU - 6185 Covering(暴搜+递推+矩阵快速幂/杜教BM)
  4. 打造大型直播平台之《PC客户端架构》
  5. Youtube最佳Red5 官方视频下载指南,字幕【亲测成功】
  6. Vue学习笔记01:准备开发与调试环境
  7. SQL数据库语言基础之SqlServer数据表的六大约束(主键、外键、检查、非空、唯一性、默认值约束)的创建
  8. Repeater删除时给出js提示
  9. ubuntu安装teamviewer教程 linux安装teamviewer教程
  10. 移动端 H5图片裁剪插件,内置简单手势操作
  11. ios12完美深色模式插件_那些好玩的插件 iOS 12(十七)
  12. javaScript视频弹幕
  13. ztree 更新配置后重新渲染树_zTree 树形控件 ajax动态加载数据
  14. HTTP: CDN缓存机制
  15. iOS RN学习随笔
  16. 疫情引发橡胶产业市场动荡,企业如何重构供应生态打破劣局?
  17. springboot+mysql+基于Android的校园综合服务App平台的设计 毕业设计-附源码181042
  18. Python中的文本替换
  19. python-基于yagmail库开发自动邮件发送程序
  20. 论一次feign微服务直接多文件上传由版本引发的血案

热门文章

  1. Ubuntu安装rjava
  2. python零基础入门大数据_【资源分享】零基础入门大数据(数据分析)经验分享...
  3. android auto 字体大小,Android中给TextView字体大小用dp还是sp?dp和sp有什么区别?
  4. asp.net 点击查询跳转到查询结果页面_个体户如何办理和查询定期定额业务?
  5. matlab画梅花,基于Matlab图像素描生成算法究.doc
  6. 调查问卷_员工满意度调查问卷
  7. QR分解原理与C实现(一般实矩阵)
  8. ViSP中识别AprilTag的C++实例代码与运行结果
  9. 优化标定的加入与实现
  10. MySQL 表中添加 时间戳 字段