java面向对象集合篇(5)Map详解

喜夏-厌秋 提交于 2020-02-27 15:20:04

一.Map

1.入门+常见方法

HashMap无序,键不重复

Map集合叫做双列集合,每个元素都由“键”、“值”两部分组成

 

HashMap中一个元素 就是一个键值对

该集合记录的是键值对 对应关系,

通过键可以找到对应的值。比如梁山好汉的绰号与该人的对应。

 

举例结合使用

/*
*   HashMap入门
*           键    值
*           key   value
 *          k     v
 *
 *          存放数据:
 *          put(key,value)          向集合中添加一个键值对
 *                                  相当于ArrayList add
 *                                  键不重复。
 *                                  如果键重复,新值覆盖旧值
 *                                  返回值:如果该键是第一次添加,返回null
 *                                          如果改键是第N次添加,返回被覆盖的旧值
* */
public static void main(String[] args) {
    //1、创建HashMap对象
    HashMap<String, String> map1 = new HashMap<String,String>();
    map1.put("黑旋风","小杨");
    map1.put("九纹龙","小黄");
    String p1 = map1.put("花和尚", "小花");//null
    String p2 = map1.put("花和尚", "小刘");//小花
    System.out.println(p1+"-----"+p2);
    System.out.println(map1);
}

 

 

 

 

方法:

方法名

描述

put(K key,V value)

向集合中添加数据。

添加成功,返回null

若键重复,则新值覆盖旧值。将被覆盖的旧值返回。

get(Object key)

通过指定键key获得值value

若获取不到,返回null

remove(Object key)

移除指定key对应的键值,并返回值。

clear()

清空集合

size()

集合中键值的个数

isEmpty()

集合是否为空

   

 

举例结合使用:

/*
*   HashMap入门
*   方法名                                描述
    get(Object key)                        通过指定键key获得值value
                                        若获取不到,返回null

                                        判断:当前集合中是否存在某个键值对
                                        if(map.get(key)!=null){
                                            //存在
                                        }else{
                                            //不存在
                                        }

    remove(Object key)                 移除指定key对应的键值,并返回值。
    size()                             集合中键值的个数
    clear()                                清空集合
    isEmpty()                          集合是否为空
                                            true:空的
                                            false:非空
* */
public static void main(String[] args) {
    //1、创建HashMap对象
    HashMap<String, String> map1 = new HashMap<String,String>();
    map1.put("黑旋风","小杨");
    map1.put("九纹龙","小黄");
    map1.put("花和尚", "小花");
    //通过键,获取值
    String str1 = map1.get("小黑旋风");
    System.out.println(str1);
    //删除
    String str2 = map1.remove("花和尚");
    System.out.println(str2);
    //集合中键值的个数
    System.out.println(map1.size());
    //清空
    map1.clear();
    //判断是否为空
    System.out.println(map1.isEmpty());
    System.out.println(map1);
}

 

 

 

2.Map遍历

方法名

描述

keySet()

Set集合的方式获得所有键key

entrySet()

Set集合的方式获得所有的键值对(Entry对象)

 

Entry对象方法:

获取键:getKey()

获取值:getValue()

   

 

举例结合使用:

 

3.Map的value存储自定义对象

同其他集合一样,Map的key或value都可以存储自定义类型对象:

 

建议:

1、使用value存储自定义对象。

2、key使用基本数据类型或String

HashMap无序,没有重复的键

 

4. LinkedHashMap

  • HashMap是无序Map集合,效率极高
  • LinkedHashMap是有序Map集合,效率一般
  • 是在HashMap的基础上添加了链表结构,通过链表结构可以保证元素

的存取顺序一致; 

举例结合使用:

 

 

 

5. Hashtable(了解)

Hashtable也是Map集合的一种已被HashMap取代,在很早的传统项目中会大量见到。其与HashMap最大的不同:

Hashtable不支持null作为键或值,是安全的。

HashMap支持null作为键或值,是不安全的。

举例结合使用

 

 

 

 

总结:

HashMap:无序

 

LinkedHashMap:有序

  • put(key,value);
  • get(key);             

通过key获取value

如果键值对不存在,返回null

if(map.get(key)==null){

键值对不存在

}

 

 

请给努力中的自己点个赞哦!

每天进步一点点`~~~~~

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!