1.Map概述
Map与Collection并列存在,用来保存具有映射关系的数据:Key-Value
Map 中的 key 和 value都可以是任何引用类型的数据
Map 中的 key 用Set来存放,不允许重复,所以Map中的Set类型需要重写hashCode()和equals()方法,因为引用对象是通过这两个方法来保证Set的唯一性。
Map中的key 和 value之间存在单向一对一关系,即通过指定的key总能找到唯一的、确定的 value。
上图是Map体系的继承树,最常用的是HashMap,LinkedHashMap用一个链表维护添加进Map的顺序,遍历得到的顺序和添加顺序一致。
2.Map中的主要方法
package org.tizen.moipservice; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import org.junit.Test; /* * Object put(Object key,Object value) 向Map中添加一个key以及value Object remove(Object key) 删除制定的 key以及对应的value,即删除制定的key-value对 void putAll(Map t) void clear() Object get(Object key) 获取制定的key的value值,如无,返回null boolean containsKey(Object key) boolean containsValue(Object value) int size() boolean isEmpty() boolean equals(Object obj) */ public class TestMain { @Test public void Test1() { Map m = new HashMap(); m.put("123a",97); m.put("b",98); m.put("AbC", 1221); m.put("b", 101); m.put("AA", 101); System.out.println(m.size()); System.out.println(m); System.out.println(m.remove("123a"));//remove返回要删除的对象,如果没有,返回null System.out.println(m); Integer i = (Integer )m.get("b"); System.out.println(i); boolean b = m.containsValue(101);//判断是否有包含相同的value值,这儿value对应的类型需要重写equals方法 System.out.println(b); } /* * 元视图操作的方法: Set keySet() Collection values() Set entrySet() */ @Test public void Test2() { Map m = new HashMap(); m.put("123a",97); m.put("b",98); m.put("AbC", 1221); m.put(null,1); //1.得到Map的KeySet,遍历 Set s = m.keySet(); System.out.println("遍历set"); for(Object o:s) { System.out.println(o); } //2.遍历values Collection c = m.values(); System.out.println("增强for循环遍历values"); for(Object o:c) { System.out.println(o); } System.out.println("迭代器遍历values"); Iterator i = c.iterator(); while(i.hasNext()) { System.out.println(i.next()); } //3.遍历key-value对 Set s1 = m.entrySet(); for(Object o:s1) { Map.Entry entry = (Map.Entry)o; System.out.println(entry.getKey()+" "+entry.getValue()); } } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-17 00:05:26