《黑马程序员》java Map集合知识小结

Java Map接口详解
本文详细介绍了Java中Map接口的基本概念及使用方法,包括添加、删除、获取和判断等操作,并展示了两种遍历Map集合的方式。此外,还对比了Hashtable、HashMap和TreeMap的特点。

    ----------- android培训java培训、java学习型技术博客、期待与您交流! ------------




Map接口不是Collection的继承,它是用于维护键值对的,而且不是不重复键值对。

      map集合存储键值对,要确保唯一性。

      添加 删除

      object put(object key,object value)将互相关联的一个关键字与一个值放入该映像。如果该关键字已经存在,那么与此关键字相关的新值将取代旧值。方法返回关键字的旧值,如果关键字原先并不存在,则返回null

      Object remove(Object key): 从映像中删除与key相关的映射

      void putAll(Map t): 将来自特定映像的所有元素添加给该映像
    void clear(): 从映像中删除所有映射“键和值都可以为null。

但是,你不能把Map作为一个键或值添加给自身

     获取

      Object get(Object key): 获得与关键字key相关的值,并且返回与关键字key相关的对象,如果没有在该映像中找到该关键字,则返回null

     判断

     boolean containsKey(Object key): 判断映像中是否存在关键字key
     boolean containsValue(Object value): 判断映像中是否存在值value

       int size(): 返回当前映像中映射的数量

      boolean isEmpty() :判断映像中是否有任何映射

                        实例:

                         添加

                             Map<String,String> map = new HashMap<String,String>();

                            //并put方法会返回被覆盖的值。
                    System.out.println("put:"+map.put("wo","adada"));//返回null
            System.out.println("put:"+map.put("wo","wddddu"));返回adada

                             判断

                                       containsKey("wo") //true


                                       containsValue("wddddu")//true

                            获取

                                       //获取map集合中所有的值。
                    Collection<String> coll = map.values();

                            

map集合的两种取出方式:
              Set<k> keySet:将map中所有的键存入到Set集合。因为set具备迭代器。
                     所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。
                             Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。

                      实例

                    //先获取map集合的所有键的Set集合,keySet();
                          Set<String> keySet = map.keySet();
                                   //有了Set集合。就可以获取其迭代器。
                        Iterator<String> it = keySet.iterator();//这里的String泛型是值得键的类型
                                        while(it.hasNext())
                         {
                      String key = it.next();
                     //有了键可以通过map集合的get方法获取其对应的值。
                        String value  = map.get(key);
                      System.out.println("key:"+key+",value:"+value);
                          } 

            Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry
                                Entry其实就是Map中的一个static内部接口。
只要有了Map集合,有了键值对,才会有键值的映射关系。
关系属于Map集合中的一个内部事物。
而且该事物在直接访问Map集合中的元素

           

         Map.Entry接口
                           Map的entrySet()方法返回一个实现Map.Entry接口的对象集合。集合中每个对象都是底层Map中一个特定的键/值对。

                       通过这个集合的迭代器,您可以获得每一个条目(唯一获取方式)的键或值并对值进行更改。当条目通过迭代器返回后,除非是迭代器自身的remove()方法或者迭代器返回的条目的setValue()方法,其余对源Map外部的修改都会导致此条目集变得无效,同时产生条目行为未定义。
                         Object getKey(): 返回条目的关键字
                         Object getValue(): 返回条目的值
                         Object setValue(Object value): 将相关映像中的值改为value,并且返回旧值

                   实例

                 /将Map集合中的映射关系取出。存入到Set集合中。
    Set<Map.Entry<String,String>> entrySet = map.entrySet();
                     Iterator<Map.Entry<String,String>> it = entrySet.iterator();
                     while(it.hasNext())
            {
        Map.Entry<String,String> me = it.next();
         String key = me.getKey();
           String value = me.getValue();
                                     System.out.println(key+":"+value);
                            }


   hashtable   底层是哈希表数据结构,不能存入null键和null值,是线程同步的

    hashMap   底层是哈希表数据结构,可以存入null键和null值,是线程不同步的

     treeMap  底层是二叉树数据结构,线程是不同步的,可以用于对Map集合中的键排序


 treeMap的实例

             

import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class Ma {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
  TreeMap<Integer,String> t=new TreeMap<Integer,String>();
                 t.put(4,"adada");
                 t.put(5, "78814");
                 t.put(8, "asdasd");
                 t.put(7,"adasfs");
Set<Map.Entry<Integer,String>> entryset=t.entrySet();
                 Iterator<Map.Entry<Integer,String>> it=entryset.iterator();
                 while(it.hasNext())
                 {Map.Entry<Integer,String> me=it.next();
                         String s=me.getValue();
                         int m=me.getKey();
                         System.out.println("key="+m+"...."+"value="+s);
                	 
                 }
	}

}
运行结果是:
key=4....value=adada
key=5....value=78814
    key=7....value=adasfs
    key=8....value=asdasd

           




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值