Map集合的简单方法

Map集合

在学校里每个学生都有自己的学号,而且我们查询成绩也总是根据学号去查询,学号就相当Map集合中的Key,而成绩就相当于Value,接下来让我们来了解一下Map集合

Map集合:键值的映射关系的一种集合(接口)

Map<K,V> ,在Map集合中,只针对键有效,跟值无关

Map接口的子实现类:HashMap和TreeMap

面试题:

   Map集合和Collection的区别?

  

   Map集合:是一种键和值的映射关系(双列集合) 当作为:夫妻对

   Collection集合:单列集合,只能存储一种类型的元素,当作为:光棍

  Map集合的一些简单的功能:

添加功能:

put(K key,V value) :添加功能:将指定的值和键关联起来

 

   删除功能

   void clear():删除所有映射关系

    Vremove(Object key)如果存在一个键的映射关系,则将其从此映射中移除

   

    判断功能:

     boolean containsKey(Object key)如果此映射包含指定键的映射关系,则返回 true

   boolean containsValue(Object value):映射关系中是否包含指定的值

   boolean isEmpty():判断映射关系是否为空

例如:

package com.Map;
 
import java.util.HashMap;
import java.util.Map;
 
 
public class MapDome {
 
public static void main(String[] args) {
//通过HashMap子实现类来创建Map集合的对象
Map<String,String> map=new HashMap<String,String>();
//添加功能
map.put("杨过", "小龙女");
map.put("郭靖", "黄蓉");
map.put("张无忌", "赵敏");
map.put("萧炎", "萧薰儿");
System.out.println("map:"+map);
System.out.println("--------------");
//删除功能,暴力删除,将所有的映射关系全部删除
// map.clear();
// System.out.println("map:"+map);
//remove(Object key)删除一个键
System.out.println("remove:"+map.remove("张无忌"));
System.out.println("map:"+map);
System.out.println("---------------");
//boolean containsKey(Object key)如果此映射包含指定键的映射关系,则返回 true
System.out.println("containsKey:"+map.containsKey("杨过"));
System.out.println("containsKey:"+map.containsKey("林动"));
System.out.println("-----------------");
//boolean containsValue(Object value):映射关系中是否包含指定的值
System.out.println("containsValue:"+map.containsValue("小龙女"));
System.out.println("containsValue:"+map.containsValue("应欢欢"));
System.out.println("-----------------");
//boolean isEmpty():判断映射关系是否为空
System.out.println("isEmpty:"+map.isEmpty());

}
}
运行结果:
map:{杨过=小龙女, 萧炎=萧薰儿, 郭靖=黄蓉, 张无忌=赵敏}
--------------
remove:赵敏
map:{杨过=小龙女, 萧炎=萧薰儿, 郭靖=黄蓉}
---------------
containsKey:true
containsKey:false
-----------------
containsValue:true
containsValue:false
-----------------
isEmpty:false

Map集合的添加功能有这样一个特点需要注意:

package org.westos_01;
 
import java.util.HashMap;
import java.util.Map;
 
public class MapDome2 {
 
public static void main(String[] args) {
Map<String,String> map=new HashMap<String,String>();
System.out.println(map.put("李小璐", "贾乃亮"));
System.out.println(map);
System.out.println(map.put("李小璐", "皮几万"));
System.out.println(map);
System.out.println(map.put("李小璐", "李晨"));
System.out.println(map);
}
}
运行结果:
null
{李小璐=贾乃亮}
贾乃亮
{李小璐=皮几万}
皮几万
{李小璐=李晨}

当你第一次添加的时候,返回值是null,键不变将值改变后,返回值变成前一个值,而集合中现有的映射取代了之前的映射,所以要注意这个问题

获取并遍历出来:

方式1:

     Set<K> keySet():获取映射关系中所有的键的集合

get(Object key):通过键找值

   int size()返回此映射中的键-值映射关系数

例如:

package com.Map;
 
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
 
/* 获取功能
 * int size()返回此映射中的键-值映射关系数
* Set<K> keySet():获取映射关系中所有的键的集合
* V get(Object key):通过键找值
*/
public class MapDome2 {
 
public static void main(String[] args) {
//创建Map集合对象
Map<String,String> map=new HashMap<String,String>();
map.put("杨过", "小龙女");
map.put("郭靖", "黄蓉");
map.put("张无忌", "赵敏");
map.put("萧炎", "萧薰儿");
//映射的关系数
int num=map.size();
System.out.println("num:"+num);
//用KeySet方法将所有键的集合放在set集合中
Set<String> set=map.keySet();
//循环遍历
for(String Key:set) {
String value=map.get(Key);
System.out.println(Key+"="+value);
}
}
}
运行结果:
num:4
杨过=小龙女
萧炎=萧薰儿
郭靖=黄蓉
张无忌=赵敏

方式2

Set<Map.Entry<K,V>> entrySet() :和Map集合的遍历有关系(键值对对象)

K getKey() 和 v getValue(),获取键值对对象中的每个键和每个值

例如:

package com.Map;
 
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
 
//Set<Map.Entry<K,V>> entrySet() :和Map集合的遍历有关系(键值对对象)
//K getKey() 和 v getValue(),获取键值对对象中的每个键和每个值
public class MapDome3 {
 
public static void main(String[] args) {
//创建Map集合对象
Map<String,String> map=new HashMap<String,String>();
map.put("杨过", "小龙女");
map.put("郭靖", "黄蓉");
map.put("张无忌", "赵敏");
map.put("萧炎", "萧薰儿");
//调用entrySet方法将所有的键值对放在set集合里
Set<Map.Entry<String,String>> set=map.entrySet();
//循环遍历
for(Map.Entry<String,String> entry:set) {
//获取键值对中的每一个键
String Key=entry.getKey();
//获取键值对中的每一个值
String Value=entry.getValue();
//输出
System.out.println(Key+"="+Value);
}
}
}
运行结果:
杨过=小龙女
萧炎=萧薰儿
郭靖=黄蓉
张无忌=赵敏

上述两种方法,推荐使用第一种,第二种从内存角度来说不推荐使用,通过键值对来找每一个对应的键和值有点繁琐,第一种比较方便简洁,通过键来找出对应的值

猜你喜欢

转载自blog.csdn.net/j_better/article/details/80275859