参考链接:

HOW2J.CN

HashMap

HashMap实现了JAVA的Map接口,类似于C++的STL框架的Map,是存储键值对的数据结构。键(key)是唯一的,但值(value)可以重复,如果向HashMap的对象中插入一个键值对,但键已经在HashMap对象中存在了,则会覆盖之前的键值对。

  1. package blog;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. public class Main {
  5. public static void main(String[] args) {
  6. HashMap<Integer, String> map = new HashMap<Integer, String>();
  7. //向HashMap中插入键值对
  8. map.put(1, "xsy");
  9. map.put(2,"theory");
  10. map.put(3,"衍射");
  11. //检验HashMap中是否包含某个键值
  12. System.out.println("HashMap中是否包含key 1: "+map.containsKey(1));
  13. //通过指定key获取值
  14. System.out.println("HashMap中key为1的值是:"+map.get(1));
  15. //删除key为1的元素
  16. map.remove(1);
  17. //遍历HashMap(推荐)
  18. for(Map.Entry<Integer, String> entry: map.entrySet()){
  19. System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());
  20. }
  21. }
  22. }

运行结果如下:

HashMap中是否包含key 1: true

HashMap中key为1的值是:xsy

Key: 2 Value: theory

Key: 3 Value: 衍射

Hashtable

HashSet同样实现了JAVA的Map接口,和HashMap基本同样的操作,但是HashMap可以用null做键和值,Hashtable不能用null做键和值。

除此之外,HashMap不是线程安全的类,Hashtable是线程安全的类

HashMap的函数没有synchronize修饰,不能保证同一时刻只有一个方法可以进入到临界区,当多个线程同时工作时,可能共同操作共享数据。



Hashtable的函数有synchronize修饰,可以保证同一时刻只有一个方法进入到临界区,避免了脏数据,线程安全。

JAVA集合二:HashMap和Hashtable的更多相关文章

  1. java 集合之HashMap、Hashtable、LinkedHashMap、TreeMap

    HashMap 实现了Map接口,线程不安全. 实现原理: HashMap由数组+链表组成,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的. 如果通过hash定位到数组位置没有链表, ...

  2. 【转】Java集合:HashMap源码剖析

    Java集合:HashMap源码剖析   一.HashMap概述二.HashMap的数据结构三.HashMap源码分析     1.关键属性     2.构造方法     3.存储数据     4.调 ...

  3. Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例

    概要 前一章,我们学习了HashMap.这一章,我们对Hashtable进行学习.我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Hashtable.第1部分 Ha ...

  4. 【转】Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例

    概要 前一章,我们学习了HashMap.这一章,我们对Hashtable进行学习.我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Hashtable.第1部分 Ha ...

  5. Java自学-集合框架 HashMap和Hashtable的区别

    HashMap和Hashtable之间的区别 步骤 1 : HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,都是键值对保存数据的方式 区别1: Hash ...

  6. Java集合:HashMap源码剖析

    一.HashMap概述 HashMap基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了不同步和允许使用 null 之外,HashMap  ...

  7. 深入Java集合学习系列:Hashtable的实现原理

    第1部分 Hashtable介绍 和HashMap一样,Hashtable也是一个散列表,它存储的内容是键值对(key-value)映射.Hashtable继承于Dictionary,实现了Map.C ...

  8. Java集合:HashMap底层实现和原理(源码解析)

    Note:文章的内容基于JDK1.7进行分析.1.8做的改动文章末尾进行讲解. 一.先来熟悉一下我们常用的HashMap: 1.概述 HashMap基于Map接口实现,元素以键值对的方式存储,并且允许 ...

  9. java中的hashmap与hashtable的区别

    HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别.主要的区别有:线程安全性,同步(synchronizatio ...

  10. Java 集合学习--HashMap

    一.HashMap 定义 HashMap 是一个基于散列表(哈希表)实现的键值对集合,每个元素都是key-value对,jdk1.8后,底层数据结构涉及到了数组.链表以及红黑树.目的进一步的优化Has ...

随机推荐

  1. 阿里巴巴--java多线程的两种实现方式,以及二者的区别

    阿里巴巴面试的时候,昨天问了我java面试的时候实现java多线程的两种方式,以及二者的区别当时只回答了实现线程的两种方式,但是没有回答上二者的区别: java实现多线程有两种方式: 1.继承Thre ...

  2. 僵尸扫描-scapy、nmap

    如果不知道僵尸扫描是什么,请参考我的这篇博客 实验环境: kali(攻击者) 192.168.0.103 metasploitable2(目标主机) 192.168.0.104 win xp sp2( ...

  3. NFC芯片选型及基本电路框架

    RFID作为一项专业度较高的技术,在一些公司,可能还会专门招聘专业的RFID工程师.本篇阐述的涉及到的只是基本选型设计.电路框架,关于RFID天线调试.低功耗检卡调试等,后续再其他篇章会继续更新! N ...

  4. springboot使用多个@RestControllerAdvice时的拦截顺序

    我们的项目中经常会使用到别人的模块,例如我的项目demo,要依赖别人的A模块,以及基础的核心core模块,此时core模块有一个使用了@RestControllerAdvice的类,负责拦截所有的co ...

  5. SpringBoot--使用JDBC连接mysql

    1.导入包     导入mysql和springJDBC的关系依赖包 <dependency> <groupId>org.springframework.boot</gr ...

  6. python变量拷贝

    写python代码时候,如:A = 0,B = A,B = 1, 有时候会发现A变成了1,那么怎么办呢? 以下是伪代码: import copy ... X_ = copy.copy(X) ... 这 ...

  7. Centos7上设置zookeeper自启动

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/zhouzhiwengang/artic ...

  8. 一.2.序列化使用之用户资源功能app

    1.环境准备:(1).新建功能app: (python36env) [vagrant@CentOS7 devops]$ python manage.py startapp users ---建议以后用 ...

  9. 数据库管理与迁移(Liquibase)

    SpringBoot 是为了简化 Spring 应用的创建.运行.调试.部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖 ...

  10. Redis系列(十):数据结构Set源码解析和SADD、SINTER、SDIFF、SUNION、SPOP命令

    1.介绍 Hash是以K->V形式存储,而Set则是K存储,空间节省了很多 Redis中Set是String类型的无序集合:集合成员是唯一的. 这就意味着集合中不能出现重复的数据.可根据应用场景 ...