API学习HashTable

来源:互联网 发布:《网络基础知识》文档 编辑:程序博客网 时间:2024/06/11 02:09
package com.wonders.week01.collection;import java.util.Collection;import java.util.Enumeration;import java.util.HashMap;import java.util.Hashtable;import java.util.Map;import java.util.Map.Entry;import java.util.Set;/** * JDK1.7 * HashTable * (1)这个类实现了一个哈希表,它将键映射到值。任何非空对象都可以作为键或值使用 * (2)为了从哈希表中恢复和存储对象,该对象必须重写hashCode和equals方法 * (3)有两个参数影响着hashtable:初始容量和负载因子,初始容量代表的是在哈希表中可以存储的数量, * 初始化容量仅仅是当hashtable被创建时的一个容量大小。 * (4)一般来说,默认的负载因子大小是0.75,在时间和空间的消耗方面提供了一个很好的平衡, * (5)在查找中,更高的值会增加时间复杂度但是会降低空间的的消耗。 * (6)线程安全的类 * @author liyongyong * */public class HashTableTest {    public static void main(String[] args) {        Map<String, Integer> map = new HashMap<String, Integer>();        map.put("aaa", 1);        map.put("bbb", 2);        map.put("ccc", 3);        Hashtable<String , Integer> numbers = new Hashtable<String, Integer>();        //在hashtable中的key中映射value,其中key和value都不可以为null        numbers.put("one", 1);        numbers.put("two", 2);        numbers.put("three", 3);        //返回hashtable中key的个数        int size = numbers.size();        System.out.println("numbers集合中的元素个数为: " + size);        //判断是否在hashtable中不存在键值对的映射        boolean flag = numbers.isEmpty();        System.out.println("如果在Hashtable中存在键值对映射,返回true,否则返回false : " + flag);        //返回hashtable中的键        Enumeration<String> key = numbers.keys();        while (key.hasMoreElements()) {            String string = (String) key.nextElement();            System.out.print(string + "  ");        }        System.out.println();        //返回hashtable中的值        Enumeration<Integer> value = numbers.elements();        while (value.hasMoreElements()) {            Integer integer = (Integer) value.nextElement();            System.out.print( integer + " ");        }        System.out.println();        //判断是否有键值对存在于hashtable中,参数是一个对象类型,        //传入的参数应该是value而不是key        boolean exist = numbers.contains(1);        System.out.println("是否存在键值对 :" + exist) ;        //如果在hashtable中有一个或者多个key都映射了这个value,则返回true        boolean containsValue = numbers.containsValue(2);        System.out.println("存在映射 :" + containsValue);        //如果这个具体的对象是hashTable中的一个key,则返回true.        boolean containsKey = numbers.containsKey("one");        System.out.println("存在这个key : " + containsKey);        //返回在hashtable中键所映射的value,如果这个key在hashtable中不存在,则返回null        Integer v1 = numbers.get("one");        System.out.println("该键所映射的值是: " + v1);        //从hashtable中根据key移除相关的键值对,如果key在hashtable中不存在,则这个方法什么也不会做        numbers.remove("one");        Enumeration<Integer> v = numbers.elements();        System.out.print("remove以后的结果:");        while (v.hasMoreElements()) {            Integer integer = (Integer) v.nextElement();            System.out.print(integer + " ");        }        System.out.println();        //把一个map集合中的所有键值对都添加到具体的hashtable集合中        numbers.putAll(map);        Enumeration<String> v2 = numbers.keys();        System.out.print("添加map以后的所有key:");        while (v2.hasMoreElements()) {            String str = (String) v2.nextElement();            System.out.print( str + " ");        }        Enumeration<Integer> v3 = numbers.elements();        System.out.print("添加map以后的所有value:");        while (v3.hasMoreElements()) {            Integer integer = (Integer) v3.nextElement();            System.out.print( integer + " ");        }        System.out.println();        //清除hashtable中的所有key        //numbers.clear();        //创建一个hashtable的浅克隆,hashtable自身的所有结构层次都会被复制        //但是key和value是不会被复制的。返回值类型是一个对象        numbers.clone();        //返回hashtable中的所有key,以set集合的形式返回        Set<String> set = numbers.keySet();        for (String string : set) {            System.out.print(string + "   ");        }        System.out.println();        //以键值对的形式返回hashtable中的键值对,等号的左边是key,等号右边是value        Set<Entry<String, Integer>> sm = numbers.entrySet();        for (Entry<String, Integer> entry : sm) {            System.out.print( entry + "  ");        }        System.out.println();         Collection<Integer> res = numbers.values();         for(Integer result : res){             System.out.print(result + " ");         }    }}

这里写图片描述

原创粉丝点击