1.Map概述
Map与Collection并列存在。用来保存具有映射关系的数据:Key-Value
Map 中的 key 和 value都能够是不论什么引用类型的数据
Map 中的 key 用Set来存放。不同意反复,所以Map中的Set类型须要重写hashCode()和equals()方法,由于引用对象是通过这两个方法来保证Set的唯一性。
Map中的key 和 value之间存在单向一对一关系,即通过指定的key总能找到唯一的、确定的 value。
LinkedHashMap用一个链表维护加入进Map的顺序,遍历得到的顺序和加入顺序一致。
2.Map中的主要方法
package org.tizen.test;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 TestMapAPI() { //遍历得到的顺序和加入顺序不一致 Map map = new HashMap<>(); map.put("image", "/opt/image.jpg"); map.put("title", "setting"); map.put("size", 80); m.put("image", "/opt/image1.jpg");//覆盖之前的map.put("image", "/opt/image.jpg"); System.out.println(map.size());//3 System.out.println(map.get("image")); System.out.println(map.get("title")); System.out.println(map.get("size")); boolean b = map.containsValue("setting"); System.out.println(b);//true }}
@Test /* * * 元视图操作的方法:Set keySet() Collection values() Set entrySet() */ 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对 by 增强for循环遍历 Set entry1 = m.entrySet(); for (Object o : entry1) { // need cast Map.Entry me = (Map.Entry) o; System.out.println(me.getKey() + ":" + me.getValue()); } // 4.遍历key-value对 by iterator Set entrySet = m.entrySet(); Iterator iterator = entrySet.iterator(); while (iterator.hasNext()) { Map.Entry entry2 = (Map.Entry) iterator.next(); System.out.println(entry2.getKey() + ":" + entry2.getValue()); } }
@Test // 自然排序 public void test3() { Map map = new LinkedHashMap(); map.put("AA", 213); map.put("BB", 45); map.put(123, "CC"); map.put(null, null); map.put("AABB", 89); Set set1 = map.keySet(); for (Object obj : set1) { System.out.println(obj + ":" + map.get(obj)); } }
@Test public void test4() { Map map = new LinkedHashMap(); map.put("AA", 213); map.put("BB", 45); map.put(123, "CC"); map.put(null, null); Setset = map.entrySet(); Iterator it = set.iterator(); while (it.hasNext()) { Map.Entry m = (Map.Entry) it.next(); System.out.println(m.getKey() + " = " + m.getValue()); } }