HashMap散列映射表

来源:互联网 发布:什么软件限制游戏 编辑:程序博客网 时间:2024/06/05 02:17

   当要储存成对元素时,就要用到可以存放键值对(Key , Value)的Map了

  1.Map 中只可以存放键值对(Key , Value),其中Key是不可以重复的,Key和Value是一一对应。

  2.HashMap是Map 接口的实现类,即是用hash的算法实现的Map.HashMap 是非线程安全的容器,轻量级,允许空的键值对。Key 是无序的存放且不可以重复的,他也是通过Hash码值来保证Key不重复的,如果要加入的键值对和HashMap中键值对的Key是相同的,就会将这个集合中的Key所对应的value值覆盖。在使用自定义类型作为Key时,要覆盖hashCode和equals方法,处理方法与HashSet相同

  3.HashMap 底层也是数组,HashSet底层其实就是HashMap,只不过是只用Key值没有Value的HashMap.

  4.改变操作:添加-删除键值对:put(key ,value)  方法在此映射中关联指定值和指定键

                                                           remove(key)    方法在此映射中移除指定键的映射关系

                                                           clear()        方法在此映射中移除所有映射关系

  5.查询操作:get(key) 方法返回指定键所映射的值,如果此键不包含任何映射关系,则返回null

                         size()方法返回此映射的关系数

  6.可以把键或者值的组作为集合来处理,KeySet()方法返回此映射中所包含的键的Set视图;values()方法返回此映射所包含的值的Collection视图,在遍历Map时,用使用其KeySet()方法获得Key的一个set集合,可以通过get()方法获得Key所对应的Value.

  7.在Map中如果经常删除,插入,定位元素,最好使用HashMap,如果按顺序遍历最好用TreeMap.---有序键的遍历

package ch7;import java.util.*;public class TestHashMap{      public static void main(String args[])      {      HashMap <String ,String >map = new HashMap<String ,String>();//构造一个默认初始容量16和默认加载因子0.75的空HashMap      //向map中添加键值对,put(K key,V value),在此映射中关联指定值和指定键      map.put("zhangsan","Java");      map.put("lisi","C++");      map.put("wangwu","C#");      map.put("yaoming","C++");      Set<String> set = map.keySet();//返回此映射中所包含的键的Set视图      Iterator <String> it = set.iterator();      Collection <String> set1 = map.values();//返回此映射所包含的值的Collection视图      Iterator <String> it1 = set1.iterator();      while(it1.hasNext())      {      String item1 = it1.next();      String keys = map.get(item1);      System.out.println(item1+"考试"+keys+"通过了");      }      while(it.hasNext())      {      String key = it.next();      String item = map.get(key);//返回指定键所映射的值;如果该键不包含任何映射关系,返回null      System.out.println(key+"同学通过了"+item+"考试");      }      String key1 = "yaoming";      if(map.containsKey(key1))      {      System.out.println("恭喜"+key1+"同学通过了"+map.get(key1));      }      else      {      System.out.println("很可惜"+key1+"没有通过考试!");      }      String value = "C++";      if(map.containsValue(value))      {      System.out.println(value + "考试还是太简单了,竟然有人通过了考试");      }      else      {      System.out.println("竟没有人通过此考试!!!!");      }      String key2 = "zhangsan";      map.remove(key2);      System.out.println(key2+"作弊,取消考试成绩!!!");      }}


0 0
原创粉丝点击