HashMap、HashSet、HashTable里面的各种方法使用

  1. HashMap和HashSet的区别

HashSet底层就是基于HashMap 实现的。(HashSet的源码非常非常少,因为除了 clone()、writeObject()、readObject()是HashSet自己不得不实现之外,其他方法都是直接调用 HashMap 中的方法)。HashMap需要key、value两个值,但是HashSet可是只需存放一个值HashSet的add方法,这里把值放到了map的key上面,而value元素默认Object对象

1.HashMap实现了map接口,HashSet实现了set接口。

2.HashMap存储键对(key-value),使用put方法加进去。HashSet仅存储对象,使用add。

3.HashMap不允许有重复的key,但是允许有重复的value。HashSet不允许有重复对象。

4.HashMap比较快,因为key唯一啊。相对来说HashSet就慢一些了。

    @Test
    public void HashMapTest(){
        System.out.println("Test01.HashMapTest");
        System.out.println();

        HashMap<Object, Object> hashMap = new HashMap<>();
        hashMap.put(01,100);
        hashMap.put("first","one");
        hashMap.put(02,99);
        hashMap.put("second","two");
        hashMap.put(01,98);

       // System.out.println(hashMap.hashCode());

        System.out.println(hashMap.isEmpty());//看看这个链表是不是空的
        System.out.println(hashMap.size());//hashMap的大小,里面有多少元素

        System.out.println(hashMap);//输出这个链表
        System.out.println(hashMap.keySet());//这只是得到hashMap的key
        System.out.println(hashMap.containsKey(01));//看看这里面是否包含01这个key
        System.out.println(hashMap.get(01));//通过key来拿到这个value

        System.out.println(hashMap.containsValue(100));//看看这里面的value是否包含100

        System.out.println(hashMap.entrySet());//这是遍历整个hashMap

        hashMap.remove(01);
        System.out.println(hashMap.entrySet());//这是遍历整个hashMap

        hashMap.replace(02,20);//替换里面的key和value,用02-20来替换里面的02-99
        System.out.println(hashMap.entrySet());//这是遍历整个hashMap

        hashMap.remove("first","one");//删除里面的元素,通过key-value
        System.out.println(hashMap.entrySet());//这是遍历整个hashMap

        hashMap.remove("second");//删除里面的元素,仅仅通过key来删除
        System.out.println(hashMap.entrySet());//这是遍历整个hashMap


        //System.out.println(hashMap.hashCode());


    }

    @Test
    public void hashtable(){
        Hashtable<Object, Object> hashtable = new Hashtable<>();
        hashtable.put(1,2);
        hashtable.put(1,100);//以为value是相同的吗,所以把2就给覆盖了
        hashtable.put(2,99);
        hashtable.put(3,98);
        System.out.println(hashtable);//他的遍历是反着来的,map是正着来的

        System.out.println(hashtable.isEmpty());//看看是否为空
        System.out.println(hashtable.size());//看看里面有多少元素
        System.out.println(hashtable.get(1));//通过key来得到value
        System.out.println(hashtable.containsKey(2));//看看这里面的key有没有2这个元素
        System.out.println(hashtable.contains(100));//看看里面有没有100

        System.out.println(hashtable.entrySet());//entrySet遍历HashTable
        System.out.println(hashtable.remove(1));//通过key来移除元素
        System.out.println(hashtable.entrySet());//entrySet遍历HashTable

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值