Java基础17--Map(一)

2014-11-24 03:32:05 · 作者: · 浏览: 3

17-1,Map集合特点&常用方法

1,Map是一个接口,一次添加一对元素,Collection是一次添加一个元素。Map也成为双列集合,Collection集合称为单列集合。

2,Map ,是将键映射到值得对象。K-->Key,V-->Value, 即为键值对。

且一个映射当中不能包含重复的键,每个键最多只能映射到一个值上。也就是说,Map是一个键值对,Map集合中必须保证键的唯一性。

3,Map常用方法。

(1)添加:

value put(key,value):返回前一个与key关联的值,如果没有,则返回null。

比如,先保存了一对 ,然后保存 ,这时由于k1相同,则v2会覆盖v1,返回v1的值,保证了key的唯一性。

(2)删除:

void clear():清空

value remove(key):根据指定的key删除这个键值对,返回这个key对应的value。

(3)判断:

boolean containsKey(key):判断是否包含指定的key。

boolean containsValue(value):判断是否包含指定的value。

boolean isEmpty():判断是否为空。

(4)获取:

value get(key):通过key取出对应的value,如果不包含这个key,则返回null,可以通过返回null,来判断是否包含指定键。

int size():获取键值对的个数。

17-2,常用方法演示

public class Demo{
	public static void main(String[] args) {
		Map
  
    map = new HashMap
   
    (); method(map); } public static void method(Map
    
      map) { System.out.println(map.put(8,"wangcai"));//null System.out.println(map.put(8,"xiaoqiang"));//wangcai System.out.println(map);//{8-xiaoqiang} //删除 System.out.println(map.remove(2));//根据key,删除
     
      键值对,返回value //判断 System.out.println(map.containsKey(8)); //获取 System.out.println(map.get(8)); } } 
     
    
   
  

17-3,重点方法keySet()演示图解

1,Set keyset():返回此映射中所包含的键的set视图。

2,演示:

public class Demo {
	public static void main(String[] args) {
		Map
  
    map = new HashMap
   
    (); method(map); } public static void method(Map
    
      map) { map.put(8,"zhaoliu"); map.put(2,"wangwu"); map.put(7,"xiaoqiang"); map.put(6,"wangcai"); /* 取出map中的所有元素。 原理:通过keySet()方法获取Map中所有的键所在的Set集合,再通过Set的迭代器获取到每一个键, 再对每一个键通过get(key)方法获取其对应的值即可。 */ Set
     
       keySet = map.keySet(); Iterator
      
        it = keySet.iterator(); while(it.hasNext()) { Integer key = it.next(); String value = map.get(key); System.out.println(key + "..." + value); } } } 
      
     
    
   
  

3,图解:

\

17-4,重点方法entrySet演示图解

1,public Set >entrySet(),返回此映射锁包含的映射关系的set视图。

2,第二种取出方式entrySet(),

public class Demo {
	public static void main(String[] args) {
		Map
  
    map = new HashMap
   
    (); method(map); } public static void method(Map
    
      map) { map.put(8,"zhaoliu"); map.put(2,"wangwu"); map.put(7,"xiaoqiang"); map.put(6,"wangcai"); /* 取出map中的所有元素。 原理:通过Map转换成set就可以迭代,这里使用另一种方法:entrySet()。 该方法将键和值的映射关系作为对象存储到了set集合中,而这个映射关系的类型就是Map.Entry类型。 */ Set
     
      > entrySet = map.entrySet(); Iterator
      
       > it = entrySet.iterator(); while(it.hasNext()) { Map.Entry
       
         me = it.next(); Integer key = me.getKey(); String value = me.getValue(); System.out.println(key + "..." + value); } } } 
       
      
     
    
   
  

3,图解:

\

4,Map.Entry的解释

Map是个接口,Map.Entry是接口中的接口,即,内部接口,表现如下:

interface Map {
	public static interface Entry {
		void get();
	}
}
class Demo implements Map.Entry {
	public void get() {...}
}

这与内部类差不多是一个原理。

17-5,方法values()的演示

1,Collection values()

返回此映射中包含的值得Collection视图。

返回Collection而不是Set的原因是:键是唯一的,而值不是唯一的,所以不能用Set存。

2,演示

public class Demo {
	public static void main(String[] args) {
		Map
  
    map = new HashMap
   
    (); method(map); } public static void method(Map
    
      map) { map.put(8,"zhaoliu"); map.put(2,"wangwu"); map.put(7,"xiaoqiang"); map.put(6,"wangcai"); Collection
     
       values = map.values(); Iterator
      
        it = values.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } } 
      
     
    
   
  

17-6,Map常用子类对象

1,Map常用子类:

(1)Hashtable:内部结构是哈希表,是同步的,不允许null作为键、值。

(2)HashMap:内部结构是哈希表,不是同步的,允许null作为键、值。

(3)TreeMap:内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。

HashSet其实