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