zoukankan      html  css  js  c++  java
  • java集合 :map 学习

    map三个实现类HashMap,TreeMap,HashTable

    1.  (1)  HashMap概述:

       HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

      (2) HashMap的数据结构:

       在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。

    网上详细的介绍:http://zhangshixi.iteye.com/blog/672697

     

    Map存储健值对,根据键得到值,不允许键重复。

    
    

    1、HashMap、LinkedHashMap、TreeMap 只允许一个键为null,值不限制。

    
    

    2、Hashtable 线程安全,键不能为null,与HashMap类似,但效率较低,HashMap如果需要实现同步,可以使用Collections. synchronizedMap或ConcurrentHashMap 。

    
    

    3、HashMap键无序;LinkedHashMap键保存了插入的顺序,使用Iterator遍历时,得到的也是插入顺序的记录;TreeMap默认按键的升序排序,可以定制比较器。

    
    
    public class Hashtable<k,v> extends Dictionary<k,v> implements Map<k,v>, Cloneable, Serializable
    
    public class HashMap<k,v> extends AbstractMap<k,v> implements Map<k,v>, Cloneable, Serializable
    
    public class LinkedHashMap<k,v> extends HashMap<k,v> implements Map<k,v>
    
    public class TreeMap<k,v> extends AbstractMap<k,v> implements SortedMap<k,v>, NavigableMap<k,v>, Cloneable, Serializable
    
    public interface SortedMap<k,v> extends Map<k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v>
    
    

    遍历Map的方法:

    
    
         Map<string,integer> hashMap = new HashMap<string,integer>();
            Random random = new Random();
            for(int i=1;i<11;i++){
                hashMap.put("map"+i, random.nextInt(i));
            }
            Set hashMapKey = hashMap.keySet();
            Collection hashMapValue = hashMap.values();
            Iterator keyVal = hashMapKey.iterator();
            System.out.print("key:");
            while(keyVal.hasNext()){
                System.out.print(" "+keyVal.next());
            }
            Iterator hashMapVal = hashMapValue.iterator();
            System.out.print("
     value:");
            while(hashMapVal.hasNext()){
                System.out.print(" "+hashMapVal.next());
            }
     
    
    
  • 相关阅读:
    TCP与UDP在socket编程中的区别
    使用python selenium webdriver模拟浏览器
    Web性能测试参数
    DPDK学习之开篇介绍
    go环境import cycle not allowed问题处理
    使用etcd+confd管理nginx配置
    服务的扩展性
    linux 网络编程
    单片机成长之路(stm8基础篇)- 025 stm8 时钟切换
    单片机成长之路(51基础篇)- 024 基于 N76E003 的按键按键状态机
  • 原文地址:https://www.cnblogs.com/mpxBlog/p/4538787.html
Copyright © 2011-2022 走看看