HashTable类

package JiHe.Map;

import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import javax.swing.RowFilter.Entry;

/*
 * HashTable类:
 * 		此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。
 * 		为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。
 * 
 * HashTable集合:底层是哈希表数据结构,不可以存放null键null值,该集合是线程同步的,
 * HashMap集合    :底层是哈希表数据结构,可以存放null键null值,该集合是不同步线程的
 * TreeMap:底层是二叉树数据结构,线程不同步
 */
public class HashMap_Test {
	public static void main(String[] args) {
		//创建一个map集合
		HashMap<String,String> map = new HashMap<String,String>();
		
		//添加元素
		map.put("01", "刘帅");
		map.put("02", "李枫");
		map.put("03", "小学");
		//在HashMap中null是可以通过键来存放的,如果是HashTable是不可以存放null的
//		map.put(null, "北大");
		map.put("04", null);
//		map.put(null, null);
		
		//根据键和值来判断数据是否存在 
		System.out.println(map.containsKey("02"));
		System.out.println(map.containsValue("小学"));
		
		//删除数据,先找找到02这个键,删除后,将删除键的值返回
//		System.out.println(map.remove("02"));
	
		//获取数据,通过键(K)来获取值(V),如果没有找到数据,返回一个null
		System.out.println(map.get("02"));
		
		System.out.println(map.get(null));
		
		//获取map集合中所有的值,返回来一个Collection对象,
		Collection<String> coll = map.values();
		System.out.println(coll);
		
		
		System.out.println("-------------------------华丽分割线--------------------------");
		
		
//		************************重点***********************
//		keySet返回此映射中所包含的键的 Set 视图。获取所有的键和值
			/*
			 * 将所map中所有的键存放到set集合中,因为set具备迭代器,所有可以迭代方式取出的键,在根据get方法,获取每一个键对应的值
			 */
		//1.先调用HashMap集合的keySet函数,将所有键获取出来存储到一个Set集合中去
		Set<String> keySet = map.keySet();
		
		//2.有了Set集合中的键,通过迭代拿到全部的值
		Iterator<String> it = keySet.iterator();
		while(it.hasNext()){
			String key = it.next();	//每循环一次,就拿到一个键
			String value = map.get(key);	//通过拿到的键,来获取值
			//将拿到的键和值打印出来
			System.out.println("key:"+key+"==value:"+value);	//取出了所有的键
		}

		System.out.println("-------------------------华丽分割线--------------------------");
		
		/*
		 * entrySet()返回此映射所包含的映射关系的 Set 视图
		 * 	Set<Map.Entry<K,V>> entrySet():将map集合中的映射关系存入到set集合中,而这两个关系的数据类型就是map.entry
		 */
		//调用map集合中的entrySet方法,返回来一个Set集合,该集合的泛型是Map.Entry,但是Map.Entry本身又有泛型的,Map.Entry <String, String>
		
		Set<java.util.Map.Entry <String, String>> entrySet = map.entrySet();
		
		//创建一个迭代器,迭代器的泛型的Set集合是一样的
		Iterator<java.util.Map.Entry<String,String>> it2 = entrySet.iterator();
		while(it2.hasNext()){
			//将集合的元素存储到一个Map.Entry里面去
			java.util.Map.Entry<String, String> me = it2.next();
			System.out.println("K:"+me.getKey()+".........V:"+me.getValue());
		} 
	}
}

  

posted on 2013-07-27 20:57  樱花满天  阅读(232)  评论(0编辑  收藏  举报

导航