首页 > 代码库 > JAVA学习第三十八课(常用对象API)- 集合框架(六)— Map集合及其常用方法

JAVA学习第三十八课(常用对象API)- 集合框架(六)— Map集合及其常用方法

一、Map集合特点

Map集合(双列集合)一次添加一对元素,Collection集合(单列集合)一次添加一个元素

接口 Map<K,V>,实际上存储的是键值对

特点:

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

也就是说Map中必须保证键的唯一性

二、常用方法

1.添加:value = http://www.mamicode.com/put(key,value);返回前一个和key相关联的值,如果没有返回null>

方法演示

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


public class Main 
{
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<Integer,String>();
		method(map);
	}
	public static void method(Map<Integer, String> map){//姓名学号
		//1.添加
		System.out.println(map.put(1,"a"));
		System.out.println(map.put(1, "b"));//存相同键,值会被覆盖
		map.put(3, "c");
		map.put(4, "d");
		System.out.println(map);
		//删除
		map.remove(3);
		System.out.println(map);
		//判断
		System.out.println("containsKey:"+map.containsKey(3));
		System.out.println("containsValue:"+map.containsValue("d"));
		//获取
		System.out.println("Get:"+map.get(4));
		System.out.println("Get:"+map.get(8));//判断8在不是
	}
}

Map和Collection没有关系,所以就不存在迭代器,那如何获取Map中所有key-value对(两种方法)

1.通过ketSet()方法(重点掌握),返回此映射中包含的Set 视图。

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


public class Main 
{
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<Integer,String>();
		KeySetMehod(map);
	}
	public static void KeySetMehod(Map<Integer, String> map){
		map.put(1, "a");
		map.put(4, "b");
		map.put(3, "c");
		map.put(5, "d");
		//取出map中的所有key-value对,分三步走
		//1.通过keySet()得到所有的key所在的Set集合,Set中有迭代器
		//2.通过迭代器,获取所以的key
		//3.通过Map中的get()获取对应的value
		Set<Integer> keyIntegers = map.keySet();
		Iterator<Integer> it = keyIntegers.iterator();
		while(it.hasNext()){
			Integer key = it.next();
			System.out.println("key - value : "+key+" - "+map.get(key));
		}
	}
}

三步走示意图


2.通过entrySet() :返回此映射中包含的映射关系Set 视图。

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

public class Main 
{
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<Integer,String>();
		KeySetMehod(map);
	}
	public static void KeySetMehod(Map<Integer, String> map){
		map.put(1, "a");
		map.put(4, "b");
		map.put(3, "c");
		map.put(5, "d");
		//映射关系的类型:Map.Entry类型 
		//Map.Entry<K, V>中的方法
		
		/*boolean equals(Object o)  比较指定对象与此项的相等性。 
		K getKey()   返回与此项对应的键。 
		V getValue()   返回与此项对应的值。 
		int hashCode()  返回此映射项的哈希码值。 
		V setValue(V value) 用指定的值替换与此项对应的值(可选操作)。 
		 */
		Set<Map.Entry<Integer,String>> entry = map.entrySet();
		Iterator<Map.Entry<Integer,String>> it = entry.iterator();
		while(it.hasNext()){
			//it.next是映射关系
			Map.Entry<Integer,String> maEntry = it.next();
			System.out.println("key - value : "+maEntry.getKey()+" - "+maEntry.getValue());	
		}
	}
}


关于Map.Entry<key,value>加强理解

interface MMap
{
	public static interface Entry{
		void get();
	}
}
class XX implements MMap.Entry
{.....}

只是一个嵌套而已

3.通过values()方法:返回此映射中包含的值的Collection 视图。

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

public class Main 
{
	public static void main(String[] args) {
		Map<Integer, String> map = new HashMap<Integer,String>();
		KeySetMehod(map);
	}
	public static void KeySetMehod(Map<Integer, String> map){
		map.put(1, "a");
		map.put(4, "a");
		map.put(3, "c");
		map.put(5, "d");
		Collection<String> cel = map.values();
		
		Iterator<String> it = cel.iterator();
		while(it.hasNext()){
			String in = it.next();
			System.out.println("key - value : "+in);	
		}
	}
}

JAVA学习第三十八课(常用对象API)- 集合框架(六)— Map集合及其常用方法