Map集合概述和使用

一、Map集合的概述

Map集合:

  • 将键映射到值的对象
  • 一个映射不能包含重复的键
  • 每个键最多只能映射到一个值

Map接口和Collection接口的不同:

  • Map是双列的(是双列集合的根接口),Collection是单列的(是单列集合的根接口)
  • Map的键唯一,Collection的子体系Set是唯一的
  • Map集合的数据结构值针对键有效,跟值无关。

二、Map集合的功能

    1.添加:

           V put(K key,V value)
    2.删除:
         V remove(Object key):根据键删除键值对象
         void clear():移除所有的键值对元素
    3.判断:
         boolean containsKey(Object key):判断集合是否包含指定的键
         boolean containsValue(Object value):判断集合是否包含指定的值
         boolean isEmpty():判断集合是否为空
    4.长度:
         int size();集合的长度,也就是键值对数
    5.获取:
         V get(Object key):根据键获取值
         Set<K> keySet():获取所有键的集合
         Collection<V> values():获取所有值的集合

三、Map集合的使用

1.创建集合并添加元素

2.删除

//V remove(Object key):根据键删除键值对象
  map.remove("郭靖");
//void clear():移除所有的键值对元素
  map.clear();

3.判断

//boolean containsKey(Object key):判断集合是否包含指定的键
   System.out.println(map.containsKey("杨过"));
	 
//boolean containsValue(Object value):判断集合是否包含指定的值
   System.out.println(map.containsValue("小龙女"));
	 
//boolean isEmpty():判断集合是否为空
   System.out.println(map.isEmpty());

4.长度

//int size():集合的长度,也就是键值对数
  System.out.println(map.size());

5.获取

//V get(Object key):根据键获取值
  System.out.println(map.get("郭靖"));

//Set<K> keySet():获取所有键的集合
	 Set<String> set=map.keySet();
	 for(String s:set) {
		 System.out.println(s);
	 }
	 
//Collection<V> values():获取所有值的集合
	 Collection<String> c=map.values();
	 for (String s : c) {
		 System.out.println(s);
	}

6.遍历 主要有两种方法

方法1:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
 * Map集合的遍历(方法1):
 *     1.获取所有键的集合。用keySet()方法来实现
 *     2.遍历键的集合,获取到每一个键。用增强for实现
 *     3.根据键去找值。用get(Object key)方法实现
 * */
public class MapDemo02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	//创建集合对象
     Map<String, String>  map=new HashMap<String, String>();
     
   //添加元素
     map.put("郭靖", "黄蓉");
	 map.put("杨过", "小龙女");
	 map.put("张若昀","唐艺昕");
	
   //获取所有键的集合
   Set<String> set=map.keySet();
	 //遍历键的集合,获取到每一个键
	 for (String key : set) {
		 //根据键去找值
		 String value=map.get(key);
		 System.out.println(key+","+value);
	}
	}

}

方法2:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
 * Map集合的遍历(方式2):
 *    1.获取所有键值对对象的集合
 *        Set<Map.Entry<K,V> entrySet():获取所有键值对对象的集合
 *    2.遍历键值对对象的集合,得到每一个键值对对象
 *        用增强for实现,得到每一个Map.Entry
 *    3.根据键值对对象获取键和值
 *        用getKey()得到键
 *        用getValue()得到值
 * */
public class MapDemo03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//创建集合对象
	     Map<String, String>  map=new HashMap<String, String>();

	     //添加元素
	     map.put("郭靖", "黄蓉");
		 map.put("杨过", "小龙女");
		 map.put("张若昀","唐艺昕");

		 //获取所有键值对对象的集合
		 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);
		}
	}

}

输出结果:

四、案例

要求:创建HashMap集合对象,键是学号(String),值是学生类(Student),存储3个键值对元素并遍历

1.创建学生类:

public class Student {
      private String name;
      private int age;
      public Student() {}
	public Student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
      
}

测试类:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
 * 思路:
 *    1.定义学生类
 *    2.创建HashMap集合对象
 *    3.创建学生对象
 *    4.把学生添加到集合
 *    5.遍历集合
 *       方式1:键找值
 *       方式2:键值对对象找键和值
 * */
public class MapDemo04 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	//创建集合对象
      Map<String, Student> map=new HashMap<String, Student>();

     //创建学生对象
      Student s1=new Student("小明",18);
      Student s2=new Student("小红",20);
      Student s3=new Student("小兰",28);

      //把学生添加到集合
      map.put("C2001", s1);
      map.put("C2002", s2);
      map.put("C2003", s3);

      //遍历集合 方式1:键找值
      Set<String> set=map.keySet();
      for(String s:set) {
    	  Student student=map.get(s);
    	  System.out.println(s+","+student.getName()+","+student.getAge());
      }

      System.out.println("------------");

     //遍历集合 方式2:键值对对象找键和值
      Set<Map.Entry<String, Student>> entrySet=map.entrySet();
      for(Map.Entry<String, Student> me:entrySet) {
    	  String key=me.getKey();
    	  Student value=me.getValue();
    	  System.out.println(key+","+value.getName()+","+value.getAge());
      }
	}

}

输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值