zoukankan      html  css  js  c++  java
  • JAVA集合二:HashMap和Hashtable

    参考链接:

    HOW2J.CN

    HashMap

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

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

    运行结果如下:

    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修饰,可以保证同一时刻只有一个方法进入到临界区,避免了脏数据,线程安全。
    在这里插入图片描述

  • 相关阅读:
    转 Xcode调试技巧 EXC_BAD_ACCESS
    qq web协议(转)
    iphone 调试技巧
    转Xcode 调试技巧 XCode调试技巧–设置全局断点快速定位问题代码所在行[zz]
    xcode 允许SVN管理项目文件
    mql4如何自定义画图
    mql相关知识
    iphone 使用委托(delegate)在不同的窗口之间传递数据
    关于同一工单中上万笔序号的一次性生成
    SharpDevelop使用心得
  • 原文地址:https://www.cnblogs.com/theory/p/11884322.html
Copyright © 2011-2022 走看看