热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HashMap、HashTable、LinkedHashMap和TreeMap的用法和区别

java为数据结构中的映射定义了一个接口java.util.map,他有四个实现类分别是HashMap、HashTable、LinkedHashMap和TreeMap。Map集合存放元

java为数据结构中的映射定义了一个接口java.util.map,他有四个实现类  分别是HashMap、HashTable、LinkedHashMap和TreeMap。

Map集合

  存放元素:键值对(也叫名值对

  限制条件: value可以重复,key不可以重复(若重复:后面的覆盖前面的)

        Map集合中key是最主要的,所以一般不会选择整数来作为键(因为整数没有很好的描述当前值)

  根据键得到值(get(key)方法)

1)HashMap  最常用的Map 

  特点:1.键不能重复  2.结果无序  3.查重规则是hashCode和equals  4.不支持线程同步

  (如果需要同步,可以用Collections.synchronizedMap(HashMap map)方法使HashMap具有同步能力)

2)Hashtable

  Hashtable与HashMap区别:

    HashMap集合中的值可以为null(数量不限),键可以为null(最多一个,规则??),不支持线程同步

    Hashtable集合中的键或者值都不能为null(规则??), 支持线程的同步(即任意时刻只有一个线程能写Hashtable),写入速度较慢

3)LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定先插入的(插入有序,那么可以普通for循环遍历吗),在遍历时,速度会比HashMap还要慢。有HashMap的全部特性

4)TreeMap

  特点:1.键不能重复  2.结果有序(从小到大)  3.排序规则是比较器

 


推荐阅读
  • Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复hashMap是hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区 ... [详细]
  • HashTable与ConcurrentHashMap均可实现HashMap的功能,对外提供了键值对存储的数据结构。但是在内部结构及实现上有何区别,性能上的差异到底在哪里又是如何导致的 ... [详细]
  • 在Java中有多种遍历HashMap的方法,注意Java中所有的Map类型都实现了共有的Map接口,所以接下来方法适用于所有Map(如:HaspMap,TreeMap,Linked ... [详细]
  • Java面试 HashMap、HashSet源码解析
    本章所有源代码基于JDK1.8版本HashMap和HashSet是JavaCollectionFramework的两个重要成员,其中HashMap是Map接口的常用实现类,Hash ... [详细]
  • 写这篇文章起源于一道面试题,如何将自定义的类对象作为key存储到HashMap中,即考虑怎么判断key的唯一性。首先,我们看以下HashMap中put(…)方法的源码:public ... [详细]
  • 一、HashMap1.HashMap概述:HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是 ... [详细]
  • 单线程化的ConcurrentHashMap的性能要比同步的HashMap的性能稍好一些,而且在并发应用中,这种作用就十分明显了。ConcurrentHashMap的实现,假定大多数常用的操 ... [详细]
  • 转载自:http:www.blogjava.netCarpenterLeearchive20160427430268.html总体介绍之所以把HashSet和HashMa ... [详细]
  • 本篇文章给大家分享的是有关Java中怎么对HashMap按键值排序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话 ... [详细]
  • 将学生对象和学生的归属地通过键与值存储到map集合中。importjava.util.HashMap;importjava.util.Iterator;importjava.uti ... [详细]
  • 01Map集合概述A:Map集合概述:我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同a:Collection中的集合 ... [详细]
  • hashmap线程不安全允许有null的键和值效率高一点、方法不是Synchronize的要提供外同步有containsvalue和containsKey方法HashMap是Java1 ... [详细]
  • 源码阅读之HashMap(JDK8)
    概述HashMap根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。HashMap最多只允许一条记录的键为null,允许多条记 ... [详细]
  • 这篇“HashMap实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅 ... [详细]
  • 要讨论这些常用的默认初始容量和扩容的原因是:当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复 ... [详细]
author-avatar
aaaaaa师太_667
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有