zoukankan      html  css  js  c++  java
  • Map.Entry 和 ConcurrentHashMap 使用

    一、内容介绍;

      主要简易介绍Map.Entry 和 ConcurrentHashMap 和使用,不深入专研源码的实现方式;

      Map.Entry

      Map是java中的接口,而Map.Entry是Map的一个内部接口;entrySet是Map对象的一个方法,返回一个实现Map.Entry的接口的对象集合,集合中每个对象都是Map中的一个键/值对;然后通过Map.Entry的方法可以获取到Map集合的Key和Value; 

    * Object getKey(): 返回条目的关键字 
    * Object getValue(): 返回条目的值
    * Object setValue(Object value): 将相关映像中的值改为value,并且返回旧值;

         HashMap、HashTable、ConcurrentHashMap

      以下三个都是存放key-value键值对的集合;其中key和value都是对象,并且不能包含重复key,但可以包含重复的value。

    * HashMap:非线程安全;HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey;Hashtable中; key和value允许出现null值;
    * HashTable:线程安全;Hashtable则保留了contains,containsValue和containsKey三个方法,其中contains和containsValue功能相同; key和value都不允许出现null值
    * ConcurrentHashMap:线程安全且效率高,多线程中推荐使用;key和value都不允许出现null值

    二、测试样例;

     1 public class MapEntryTest {
     2 
     3     public static void main(String[] args) {
     4         // TODO Auto-generated method stub
     5         Map<String,String> map = new HashMap<String,String>();
     6         map.put("Andy", "90");
     7         map.put("Tony", "80");
     8         map.put("Jason", "96");
     9         for(Map.Entry<String, String> entry : map.entrySet()){
    10             System.out.println("key="+entry.getKey()+"  value="+entry.getValue());
    11             if(entry.getKey().equals("Tony")){
    12                 entry.setValue("100"); //更改value的值并返回旧值;
    13             }
    14         }
    15         System.out.println(map.get("Tony"));
    16     }
    17 
    18 }
     1 public class ConcurrentHashMapTest {
     2 
     3     public static void main(String[] args) {
     4         // TODO Auto-generated method stub
     5         Map<String,String> map = new HashMap<String,String>();
     6         map.put("Andy", "90");
     7         map.put(null, null);
     8         System.out.println(map.size());
     9         
    10         Map<String,String> map2 = new ConcurrentHashMap<String,String>();
    11         map2.put("Tony", "80");
    12         System.out.println(map2.get("Tony"));
    13         
    14         Map<String,String> map3 = new Hashtable<String,String>();
    15         map3.put("Jack", "20");
    16         System.out.println(map3.get("Jack"));
    17     }
    18 
    19 }
  • 相关阅读:
    Delphi中动态创建的Panel无法改变颜色的解决办法(要把Panel的ParentBackground设为False)
    判断当前进程是否以管理员权限启动的
    在一个exe文件中查找指定内容,找到则返回起始位置, 否则返回0
    [置顶] 使用严苛模式打破Android4.0以上平台应用中UI主线程的“独断专行”
    删除IE缓存中指定的文件
    将窗体显示在 PageControl 上
    判断操作系统多久没有任何操作
    UrlDownloadFile, 线程下载文件, 带进度条
    用JSON 和 Google 实现全文翻译
    成为高效程序员的7个重要习惯
  • 原文地址:https://www.cnblogs.com/crazytrip/p/11697628.html
Copyright © 2011-2022 走看看