黑马程序员-----集合框架MAP集合使用(第三篇)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1.Map集合

该集合存储键值对,一对一对往里存,而且要保证键的唯一性。

基本操作:

添加:

put(K key,V value);

putAll(Map<? Extends K,?extends V> m)

删除:

clear()      remove(Object key)

判断

containsValue(Object value)

containsKey(Object key)

isEmpty()

获取

get(Object key)    size()   value()

entrySet()

keySet()

 

2. Map包含子类

-Hashtable:底层是哈希表数据结构,不可以使用nullnull值,该集合石线程同步的。

-HashMap:底层是哈希表数据结构,允许使用nullnull值,该集合不同步。

-TreeMap:底层是二叉树数据结构,线程不同步,可以用于map中键值来进行排序。

 

3Map集合的两种取出方式

1.KeySet:将map中所有的键存入Set集合,Set集合具备迭代器可以取出所有键,根据get方法,获取对应的值。

Map集合的取出原理:将map集合转成set集合,通过迭代器取出。

2.entrySet:将map集合中的映射关系存入set集合中,关系式Map.Entry.

Map.Entry其实Entry也是一个接口,他是Map接口中的一个内部接口。

 

4Map的基本操作实例如下:

//Map的基本使用

import java.util.*;

class  MapDemo
{
       public static void main(String[] args)
       {
              HashMap<String,String> m=new HashMap<String,String>();
              System.out.println("put:"+m.put("liwei","11"));//输出null
              System.out.println("put:"+m.put("liwei","1234"));//输出1234
              System.out.println("put:"+m.put("liwei","555"));//输出1234
              //添加元素相同的键,后面覆盖前面的值,并返回覆盖的值
                m.put("03",null);
              //获取liwei键的值,和所有的值,values返回的类型是Collection,集合
                System.out.println(m.get("liwei")+m.values());
              Collection c=m.values();             
              System.out.println(m.values());//输出【555,null】,
                System.out.println(m);//输出<liwei=555,03=null>
               通过keySet方法取出元素
                Set<String> key=m.keySet();//键的类型
                Iterator it=key.iterator();
              while(it.hasNext())
              {
                     //可以通过map集合的get(key)方法获取对应的值
                     System.out.println(m.get(it.next()));
              }
              通过entrySet方法取出元素.这个关系式Map.Entry
              Set<Map.Entry<String,String>>  ss=m.entrySet();
              Iterator<Map.Entry<String,String>>  me=ss.iterator();
              while(me.hasNext())
              {
                     //可以通过getKey和getValue方法获取键.值
                     Map.Entry<String,String> mm=me.next();
                     System.out.println(mm.getValue()+mm.getKey());
             }
       }
} 


5.TreeMap的使用实例

//输入一堆字符串,打印结果为a(1)c(2)....

import java.util.*;
class  Maptest
{
       public static void main(String[] args)
       {     
              System.out.println(charCount("AsfDD"));
       }
       public static String charCount(String s)
       {
              char c[]=s.toCharArray();
//            System.out.println(c[3]);
              //本身包含compareble方法能自己排序
                TreeMap<Character,Integer> h=new TreeMap<Character,Integer>();
              for(int x=0;x<c.length;x++)
              {
                     Integer value=h.get(c[x]);
                     if(h.get(c[x])!=null)

                     {
              //            Integer value=h.get(c[x]);
                            value=value+1;
                            h.put(c[x],value);
                     }           
                     else
                     {
                           h.put(c[x],1);
                     }
              }
              //定义缓冲区来存储数据
                StringBuilder str=new StringBuilder();
              Set<Map.Entry<Character,Integer>> sb=h.entrySet();
              Iterator<Map.Entry<Character,Integer>> it=sb.iterator();
              while(it.hasNext())
              {
                     Map.Entry<Character,Integer> s1=it.next();
                     str.append(s1.getKey()+"("+s1.getValue()+")");          
              }
              return str.toString();
       }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值