码迷,mamicode.com
首页 > 编程语言 > 详细

详解Java中Map用法

时间:2015-05-16 21:52:09      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:map集合

Map以按键/数值对的形式存储数据,这里要特别说明( Map.Entry,是Map的内部类,它用来描述Map中的键/值对)。 Map是一个接口,我们平时多用它的实现类HashMap

用例如下:

  public     static     void     main(String     args[])   
    {   
        HashMap     hashmap     =     new     HashMap();   
        hashmap.put("Item0",     "Value0");   
        hashmap.put("Item1",     "Value1");   
        hashmap.put("Item2",     "Value2");   
        hashmap.put("Item3",     "Value3");   
        Set     set     =     hashmap.entrySet();   
        Iterator     iterator     =     set.iterator();   
        while     (iterator.hasNext()   
      {   
          Map.Entry     mapentry     =     (Map.Entry)     iterator.next();   
          System.out.println(mapentry.getkey()     +     "/"     +     mapentry.getValue());   
      }   
    }   

 注意,这里Map的按键必须是唯一的,比如说不能有两个按键都为null当然也可以这样,

Map<String, Order> map = new HashMap<String, Order>();
            map.put("Order", (Order) obj);

详细理解:

       Collection容器中包含SetList接口,Set中又包含HashSetList中包含LinkedListArrayList;单独的Map接口中只有HashMap

       java.util 中的集合类包含 Java 中某些最常用的类。最常用的集合类是 List Map List 的具体实现包括 ArrayList Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形,其中的数据有顺序且可以重复(有顺序即提供geti)的索引方法)。而Set中数据无顺序且不可以重复

 

1我们将这 Object的这两个方法覆盖,以正确比较 Map 对象的等价性。

equals(Object o)

比较指定对象与此 Map 的等价性

hashCode()

返回此 Map 的哈希码


2 Map 更新方法:可以更改 Map 内容。

clear()

Map 中删除所有映射

remove(Object key)

Map 中删除键和关联的值

put(Object key, Object value)

将指定值与指定键相关联

clear()

Map 中删除所有映射

putAll(Map t)

将指定 Map 中的所有映射复制到此 map

 

重点处:遍历Map

       迭代 Map 中的元素不存在直接的方法。如果要查询某个 Map 以了解其哪些元素满足特定查询,或如果要迭代其所有元素,则你必须首先获取该 Map “视图”共有三种视图。

3返回视图的 Map 方法。通过使用这些方法返回的对象,可以遍历 Map 中的元素,也可以删除 Map 中的元素。

entrySet()

返回 Map 中所包含映射的 Set 视图。 Set 中的每个元素都是一个 Map.Entry 对象,可以使用 getKey() getValue() 方法(还有一个 setValue() 方法)访问后者的键元素和值元素

keySet()

返回 Map 中所包含键的 Set 视图。删除 Set 中的元素还将删除 Map 中相应的映射(键和值)

values()

返回 map 中所包含值的 Collection 视图。删除 Collection 中的元素还将删除 Map 中相应的映射(键和值)

所有键值对参见 entrySet()

所有键     — 参见 keySet()

所有值     — 参见 values()

       前两个视图均返回 Set 对象,第三个视图返回 Collection 对象。就这两种情况而言,问题到这里并没有结束,这是因为您无法直接迭代 Collection 对象或 Set 对象。要进行迭代,你必须获得一个 Iterator 对象。因此,要迭代 Map 的元素相对麻烦,但也没有更好的办法。

IteratorkeyValuePairs = aMap.entrySet().iterator();
Iterator keys= aMap.keySet().iterator();
Iteratorvalues = aMap.values().iterator();

4 Map 访问和测试方法:这些方法检索有关 Map 内容的信息但不更改 Map 内容。

get(Object key)

返回与指定键关联的值

containsKey(Object key)

如果 Map 包含指定键的映射,则返回 true

containsValue(Object value)

如果此 Map 将一个或多个键映射到指定值,则返回 true

isEmpty()

如果 Map 不包含键-值映射,则返回 true

size()

返回 Map 中的键-值映射的数目

 

自己写的用例代码如下:

package MapUsage;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class guo {
	private Map map;
	
	guo(){
//		Map<Integer,String> map =new HashMap<Integer,String>();
		this.map =new HashMap();
		map.put(1, "str1");
		map.put(2, "str2");
		map.put(3, "str1");
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		guo guo =new guo();
		guo.fun1();
		guo.fun2();
	}
	
	public <E> void fun1(){  //遍历Map
		System.out.println(map.size()); //map映射个数
		System.out.println(map.entrySet().getClass());  //HashMap的内部类EntrySet
		
		//map的三种视图
		Set<Entry<Integer, String>> set =map.entrySet();
//		Set<Integer> set_Key =map.keySet();
		Set<E> set_Key =(Set<E>) map.keySet();
		Collection<String> col_Value = map.values();  //不能返回Set,values值可能有重复
		
		
		Iterator<Map.Entry<Integer, String>> itera_Entry =set.iterator();
		Iterator itera_Key =set_Key.iterator();
		Iterator<String> itera_Value =col_Value.iterator();
		
		//迭代器
		while(itera_Entry.hasNext()){
			Map.Entry<Integer, String> mapEntry =itera_Entry.next();
			System.out.println("键:"+mapEntry.getKey()+" 值:"+mapEntry.getValue());
		}
		//增强for循环
		/*for(Integer key:set_Key){
			System.out.println("键:"+key);
		}*/
		for(E key:set_Key){
			System.out.println("键:"+key);
		}
		
		for(String value:col_Value){
			System.out.println("值:"+value);
		}
	}
	
	public Boolean fun2(){
		Boolean b;
		b =map.containsKey(5);
		System.out.println(b);
		return b;
	}

}


 

 

 

 

 

详解Java中Map用法

标签:map集合

原文地址:http://blog.csdn.net/guomutian911/article/details/45771621

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!