[Java]Map接口及其子类

基本概念

在Java语言中,java.util.Map接口是集合框架的顶层接口之一
java.util Map<K , V>接口中存放元素的基本单位是单对元素(K 用于描述键(Key)的类型,V 用于描述值(Value)的类型)
该接口的主要实现类:HashMap 类TreeMap类
该接口中Key(键)不允许重复,而且每个Key(键)只能对应一个Value(值)

问:HashMap类和Hashtable的区别?
答:它们均为Map接口的实现类
Hashtable类属于早期的类,是线程安全的类,效率较低
HashMap类属于后增加的类,是线程不完全的类,非线程安全的类,效率比较高

常用的方法

  • V put(K key , V value)
    — 用于将Key和Value 组成一对放入当前集合中
    — 若实现增加功能则返回null,若实现修改功能则返回原来的Value
//1、声明Map类型的引用指向实现类的对象,形成多态
    Map<Integer,String> m1 = new HashMap<Integer,String>();
//2、向集合中增加元素
    String str1 = m1.put(1,"one");
    Ststem.out.println("str1 = " + str1);   //null
    //自动调用toString()方法,调用HashMap中的toString()方法
    //默认打印格式为:{键1 = 值1,键2 = 值2,...}
    System.out.println("m1 = " + m1);    //{1 = one}
    //增加元素
    str1 = m1.put(2,"two");
    System.out.println("str1 = " + str1);   //null
    System.out.println("m1 = " + m1);   //{1 = one,2 = two}
    //修改元素
    str1 = m1.put(1,"eleven");
    System.out.println("str = " + str1);   //one
    System.out.println("m1 = " + m1);   //{1 = eleven,2 = two}
  • boolean contains Key(Object key)
    用于判断当前集合中是否存在参数指定的key
  • boolean containsValue(Object value)
    用于判断当前集合中是否存在参数指定的value
  • v get(Object key)
    用于根据参数指定的key返回对应的value,若key不存在则返回null
  • v remove(Object key)
    用于根据参数指定的key来删除键值对,返回该key对应的value
  • Set <Map.Entry<K,V>> entrySet()
    — 用于将Map集合转换为Set集合,集合中的每个元素都是键值对
    — 其中Map.Entry是接口类型,常用方法有:
    (1)K getKey( ) — 用于获取键值对中的键
    (2)V getValue( ) — 用于获取键值对中的值
  • Set keySet( )
    用于将Map集合中所有的键放入Set集合中并返回

遍历Map集合中所有的元素

//实现Map集合所有元素的遍历
    //方法一:调用toString()方法
        //参考上述代码
    //方法二:调用entrySet()方法
        //实现Map集合转向Set集合
        Set <Map.Entry<String,String>> s1 = m1.entrySet();
        for(Map.Entry<String,String> me:s1){
			System.out.println(me.getKey() + "=" + me.getValue());
		}
	//方法三:调用keySet()方法
		//实现Map集合中所有的key转换为Set集合
		Set<String> s2 = m1.keySet();
		//使用for each打印Set集合的所有元素
		for(String ts : s2){
			System.out.println(ts + "=" + m1.get(ts));
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值