您的位置:首页 > 编程语言 > Java开发

Java基础Map的使用

2015-07-15 22:04 543 查看
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 TestMapAPI()  
    {
        //遍历得到的顺序和添加顺序不一致
        Map m = new HashMap();  
        m.put("123a",97);  
        m.put("b",98);  
        m.put("AbC", 1221);  
        m.put("b", 101);//覆盖之前的m.put("b",98);
        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);
        b = m.containsValue(1221);
        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());

}

}
@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(new Person("DD", 23), 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);
        map.put(new Person("DD", 23), 89);
        Set<Map.Entry> set = map.entrySet();
        Iterator it = set.iterator();
        while (it.hasNext()) {
            Map.Entry m = (Map.Entry) it.next();
            System.out.println(m.getKey() + " = " + m.getValue());
        }

    }

 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: