欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java容器---Map

程序员文章站 2022-06-16 23:38:30
...
/*
*created by yangyinglong at 20180516 
*Map接口的学习
*/

import java.util.*;

public class MapTest {
	public static void main(String[] argv) {
		Map m1 = new HashMap();
		Map m2 = new TreeMap();

		// V put(K key, V value) 将指定的值与此映射中的指定键关联(可选操作)
		m1.put("one", new Integer(1));
		m1.put("two", new Integer(2));
		m1.put("three", new Integer(3));
		// m1.put("four", new Integer(3));

		m2.put("A", new Integer(1));
		m2.put("B", new Integer(2));
		m2.put("C", new Integer(3));

		//int size() 返回映射关系数
		System.out.print("HashMap m1 的长度: ");
		System.out.println(m1.size());

		Map m3 = new HashMap(m1);
		Map m4 = new TreeMap();
		m4.put("one", new Integer(1));
		m4.put("two", new Integer(2));
		m4.put("three", new Integer(3));

		// void	putAll(Map<? extends K,? extends V> m) 
		// 从指定映射中将所有映射关系复制到此映射中(可选操作)。
		m4.putAll(m2);
		System.out.println("m4 putAll(m2)之后, m4: " + m4);
		System.out.print("复制m1的映射到m3,m3为: ");
		System.out.println(m3);

		// int hashCode() 返回此映射的哈希码值。
		int m1_hashCode = m1.hashCode();
		int m2_hashCode = m2.hashCode();
		int m3_hashCode = m3.hashCode();
		int m4_hashCode = m4.hashCode();
		System.out.println("hashCode: m1="+m1_hashCode+" m2="+m2_hashCode+" m3="+m3_hashCode
			+" m4="+m4_hashCode);
		// hashCode: m1=110564946 m2=192 m3=110564946 m4=110565138
		// 可以看出m1 + m2 = m4,因为m4中的映射包含m1和m2的映射

		//boolean equals(Object o) 判断两个映射Map是否相同
		boolean is_equals_m1_m3 = m1.equals(m3);
		System.out.println(is_equals_m1_m3);
		boolean is_equals_m1_m4 = m1.equals(m4);
		System.out.println(is_equals_m1_m4);

		// Collection<V> values() 返回此映射中包含的值的 Collection 视图
		Collection collection = m2.values();
		System.out.println(collection);

		// Set<K> keySet() 返回此映射中包含的键的 Set 视图。
		Set set_key = m1.keySet();
		System.out.println(set_key);
		//Set的iterator()方法
		Iterator iter = set_key.iterator();
		while (iter.hasNext()) {
			Object key = iter.next();
			 // V get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
			System.out.println(key + ": " + m1.get(key));
		}

		// boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。
		boolean is_containsKey_one = m1.containsKey("one");
		System.out.println("m1 是否包含 one 这个键的映射: " + is_containsKey_one);

		// boolean	containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。
		boolean is_containsValue_1 = m1.containsValue(new Integer(1));
		System.out.println("m1 是否包含 1 这个值的映射: " + is_containsValue_1);

		// Set<Map.Entry<K,V>> entrySet()  返回此映射中包含的映射关系的 Set 视图,修改Set会改变Map。
		Set map_to_set = m1.entrySet();
		System.out.println("Map.entrySet()之后的map_to_set:" + map_to_set);
		// map_to_set.clear(); 
		System.out.println("执行map_to_set.clear()之后的map_to_set: " + map_to_set);
		System.out.println("执行map_to_set.clear()之后的m1        : " + m1);

		// V remove(Object key) 如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
		Object return_value = (Integer)m2.remove("A");
		System.out.println("key为A的映射被remove,返回值value为: " + return_value);

	}
}