我希望有很多很多的爱,如果没有很多的爱,我希望有很多很多的钱;没有很多的钱,我希望拥有健康! I am like the road in the night listening to the footfalls of its memories in silence.

Java: Map例子

上一篇 / 下一篇  2016-02-22 16:51:57 / 个人分类:Java

掌握Map接口与Collection接口不同
掌握Map与Map.Entry接口的关系
掌握Map接口的常用子类:HashMap、HashTable、TreeMap、WeekHashMap
掌握HashMap与HashTable的区别


3、具体内容

Collection的操作中之前已经发现,每次保存对象都一个对象,但是在Map中保存是的一对对象,对象的形式是以:key->value的形式保存的。
就好像电话本:张三->123456

Map接口中的方法

No.    方法或类                    类型    描述
1    public void clear()                普通    清空Map集合
2    public boolean containsKey(Object key)        普通    判断指定的key是否存在
3    public boolean containsValue(Object value)    普通    判断指定的value是否存在
4    public Set<Map.Entry<K,V>> entrySet()        普通    将Map对象变为Set集合
5    public boolean equals(Object o)            普通    对象比较
6    public V get(Object K)                普通    根据key获得value
7    public int hashCode()                普通    返回哈希码
8    public boolean isEmpty()            普通    判断集合是否为空
9    public Set<K> keySet()                普通    取得所有的key
10    public V put(K key,V value)            普通    向集合中加入元素
11    public void putAll(Map<? extends K,extends V> t)普通    将一个Map集合中的内容加入到别一个Map
12    public V remove(Object key)            普通    根据key删除value
13    public int size()                普通    取得集合长度
14    public Collection<V> values()            普通    取得全部的value


Map接口的常用子类:
HashMap:无序存放的,是新的操作类,key不允许重复。
Hashtable:无序存放的,是旧的操作类,key不允许重复。
TreeMap:可以排序的Map集合,按集合中的key排序,key不允许重复。
WeakHashMap:弱引用的Map集合,当集合中的某些内容不再使用时,可以清楚掉无用的数据,可以使用gc进行回收。
IdentityHashMap:key可以重复的Map集合。

Map与Map.entry的关系:


代码例子:
 

packageIntf.study;

 

importjava.util.Collection;

importjava.util.HashMap;

importjava.util.Map;

importjava.util.Set;

 

 

publicclassintfTest {

 

   publicstaticvoidmain(String[] args) {

 

      //一个key需要保存多个value的时候就需要使用到这个IdentityHashMap

 

      //1段代码,Map不指定类型与指定类型

      System.out.println("*************1段代码:");

      // Map:里面存放的是键值对集合,键值对的类型可以是任意封装类型,:

      //Map()相当于Map<Object,Object>.,这个是指装入的键是对象类型,装入的值是对象类型

      //value对象通过toString转换为字符串,再转换成其他的类型,如Intdate

      Mapmap_t1 =newHashMap();

      //以下的俩种使用方式都是对的

      map_t1.put("a", 1);

      map_t1.put(11,"abc");

      // Map<key,value>:里面存放的也是键值对集合,但是类型只能是<>中指定的类型

      Map<String, Integer> map_t2 =newHashMap<String, Integer>();

      map_t2.put("a", 1);//正确使用方式

      // map_t2.put(11,"abc"); //错误使用方式,会导致无法通过编译

      intint_t=map_t2.get("a");//Map指定了类型,那么可直接获取类型值,而不是object

      System.out.println("int_t="+int_t);//打印对象

 

      //2段代码,取value值的方法,包括转换为数值、日期

      System.out.println("*************2段代码:");

      

      Mapmap =newHashMap();//声明一个Map

      map.put("sa_str","abc");//map中放值,注意:mapkey-value的形式存放的

      map.put("sb_int", 50);//放非字符串的值

      String str = map.get("sa_str").toString();//map中取值

                                             //,注意:不能写成map.get("sa"),因为后者返回是object类型

      System.out.println("map值字符串sa_str="+ str);

 

      String str2 = map.get("sb_int").toString();//整数value先转换为字符串

      inta=Integer.parseInt(str2); //再通过字符串转换为整数

      System.out.println("map值整数="+ a);

 

      Object get = map.get("sa_str");//获取指定键所映射的值,value值是一个对象类型

      System.out.println("打印对象get="+ get);//打印对象

      if(getinstanceofString) {//判断键值是否为String类型

          String value = (String) get;//获取指定的value

          System.out.println("Map集合中键名sa_str的键值是:"+ value);//value值输出

      }

      

      String key1 ="caterpillar";

      String key2 ="justin";

      map.put(key1,"caterpillar的讯息");

      map.put(key2,"justin的讯息");

      System.out.println(map.get(key1));

      System.out.println(map.get(key2));

   

      //3段代码,改变value值、删除某Key元素、清空map(重新初始化)

      System.out.println("*************3段代码:");

   

      map.put(key1,"123456789");

TAG: java JAVA Java

 

评分:0

我来说两句

Open Toolbar