JavaSE Map的使用

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);

		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());
		}
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值