Java-Map的应用

37 篇文章 0 订阅

Map

Map:将键映射到值的对象。 地图不能包含重复的键; 每个键可以映射到最多一个值

Map和Collection的区别:

  • Map是一个双列集合,常用于处理有对应关系的数据,key是不可以重复的,我们也称之为夫妻对集合
  • Collection单列集合,Collection有不同的子体系,有的允许重复有索引有序,优的不允许重复而且无序,单身汉集合

Map的常用功能:

  • 映射功能
    V put(K key, V value)

  • 获取功能
    V get(Object key)
    int size()

  • 判断功能
    boolean containsKey(Object key)
    boolean containsValue(Object value)
    boolean isEmpty()

  • 删除功能
    void clear()
    v remove(Object key)

  • 遍历功能
    Set<Map.Entry<K,V>> entrySet()

  • Set keySet()

  • Collection values()

package com.it04;

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

/*
 * 	需求:实现学号和姓名对应关系的存储
 * 	一对一:一个学号对应一个姓名
 */
public class MapDemo {

	public static void main(String[] args) {
		//创建Map对象
		Map<String,String> map = new HashMap<String,String>();
		
		//V put(K key, V value)就是将key映射到value的功能,如果key存在,则将value覆盖
		System.out.println(map.put("001", "zhansan"));
		System.out.println(map.put("002", "lisi"));
		System.out.println(map.put("003", "wangwu"));
		
		//void clear()清空所有的对应关系
		//map.clear();
		
		//v remove(Object key)指定key删除元素并返回删除的value,没有删除成功返回null
		System.out.println(map.remove("003"));
		
		//boolean containsKey(Object key)
		System.out.println(map.containsKey("001"));
		
		//boolean containsValue(Object value)
		System.out.println(map.containsValue("wangwu"));
		
		//boolean isEmpty()
		System.out.println(map.isEmpty());
		
		//int size()map对应关系的对数
		System.out.println(map.size());
		
		//V get(Object key)指定key返回对应的value
		System.out.println(map.get("001"));
		
		//Set<K> keySet()
		Set<String> keys=map.keySet();
		System.out.println(map.keySet());//key值set形式集合[001, 002]
		for (String str : keys) {
			System.out.println(str);
		}
		
		//Collection<V> values()
		Collection<String> values = map.values();
		System.out.println(map.values());//[zhansan, lisi]
		for (String str : values) {
			System.out.println(str);
		}
		
		
		
		
		System.out.println(map);
	}

}

Map的遍历方式
第一种遍历方式:

  • 首先,召集所有的key,
  • 遍历key
  • 获取key,找到对应的value

第二种遍历方式

  • class Entry<k,v>

  • Set<Map.Entry<K,V>> entrySet()

package com.it04;

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

/*
 * Map的遍历方式
 * 		第一种遍历方式:
 * 			首先,召集所有的key,
 * 			遍历key
 * 			获取key,找到对应的value
 * 		第二种遍历方式
 * 			class Entry<k,v>{
 * 				k key;
 * 				v value;
 * 				public Entry(k key,v value){
 * 						this.key=key;
 * 						this.value=value;
 * 				}
 * 				public k getkey(){
 * 						return key;
 * 				}
 * 				public v getvalue(){
 * 						return value;
 * 				}
 * 			}
 * 
 * 		Set<Map.Entry<K,V>> entrySet()  
 */
public class MapDemo2 {

	public static void main(String[] args) {
		//第一种遍历方式
		method1();
		
		//第二种遍历方式
		method2();
		
	}

	private static void method2() {
		Map<String,String> map = new HashMap<String,String>();
		map.put("001", "zhansan");
		map.put("002", "lisi");
		map.put("003", "wangwu");
		
		//创建证件
		Set<Map.Entry<String, String>> entrys =map.entrySet();
		
		//遍历对象
		for (Map.Entry<String, String> entry : entrys) {
			//获取每个对象
			String key = entry.getKey();
			String value = entry.getValue();
			
			System.out.println("key:"+key+"----"+"value:"+value);
		}
	}

	private static void method1() {
		Map<String,String> map = new HashMap<String,String>();
		map.put("001", "zhansan");
		map.put("002", "lisi");
		map.put("003", "wangwu");
		
		
		
		//召集keys
		Set<String> keys=map.keySet();
		
		//遍历keys
		for (String key : keys) {
			//找value
			String value = map.get(key);
			System.out.println("key:"+key+"----"+"value:"+value);
		}
	}

}

使用HashMap存储数据并遍历

package com.it05;

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

/*
 * 	使用HashMap存储数据并遍历
 */
public class HashMapDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		HashMap<String,String> map = new HashMap<String,String>();
		
		//添加映射关系
		map.put("001", "zhansan");
		map.put("002", "lisi");
		map.put("003", "wangwu");
		
		//遍历
		Set<Map.Entry<String, String>> entrys =map.entrySet();
		
		//遍历对象
		for (Map.Entry<String, String> entry : entrys) {
			//获取每个对象
			String key = entry.getKey();
			String value = entry.getValue();
			
			System.out.println("key:"+key+"----"+"value:"+value);
		}
	}

}

使用HashMap存储数据并遍历(自定义对象作为key)

package com.it05;

public class Student {
	String name;
	int age;
	
	public Student(String name, int age) {
		//super();
		this.name = name;
		this.age = age;
	}

	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	};
	
	
}

package com.it05;

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

/*
 * 	使用HashMap存储数据并遍历(自定义对象作为key)
 */
public class HashMapDemo2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		HashMap<Student,String> map = new HashMap<Student,String>();
		
		//创建key对象
		Student s1 = new Student("zhangsan",18);
		Student s2 = new Student("lisi",20);
		Student s3 = new Student("wangwu",20);
		
		//添加映射
		map.put(s1, "001");
		map.put(s2, "002");
		map.put(s3, "003");
		
		//遍历Map对象
		Set<Map.Entry<Student, String>> entrys=map.entrySet();
		
		for (Map.Entry<Student, String> entry : entrys) {
			//获取每个对象
			Student key = entry.getKey();
			String value = entry.getValue();
			
			System.out.println("key:"+key.toString()+"-----"+"value:"+value);
		}	
		
	}

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值