day22每日一考

day22每日一考

题目

1.Map存储数据的特点是什么?并指明key,value,entry存储数据的特点。
2.描述HashMap的底层实现原理(jdk8版)
3.Map中常用实现类有哪些?各自有什么特点?
4.如何遍历Map中的key-value对,代码实现
5.Collection和Collections的区别?

答案

Map存储数据的特点是一对一对的存储(key-value)键值对,无序性

key是由Set进行存储,无序性,单个存储,不可重复的

value是Collection进行存储,无序的,可重复的

entry是无序的,不可重复的,Set进行存储,存储的key-value键值对

HashMap在jdk8底层是由链表+数组+红黑树

在底层没有创建一个数组为16的数组,底层数组为Node[]

首次调用put()方法时,底层创建数组长度为16的数组

先计算key所在类的hashcode值来确定需要在数组存放的位置

如果位置上没有数据,k-v键值对添加成功

如果位置上有数据,那么比较key的hashcode值和所在位置hashcode值

​ 如果不相等,k-v键值对添加成功

​ 如果有数据,调用key1所在类的equals(key2)方法

​ 如果不相等,此时键值对存储成功

​ 如果相等,那么就将value与链表相同位置的value值进行替换

当链表上存储的数据个数大于8且当前数组长度大于64时,此时此索引位置上的所有数据改为红黑树存储

HashMap:无序性,Map的主要实现类,线程不安全,效率高,存储null的key和value,底层数组+链表

​ LinkedHashMap:可以按照元素输入顺序进行遍历,在HashMap的基础上添加指针,一个指向前一个,一个指向后一个

​ 频繁的进行遍历,效率要高于HashMap

TreeMap:可以按照自己的情况进行排序,底层使用红黑树进行存储,此时考虑key的自然排序与定制排序

Hashtable:Map的古老实现类,线程安全,效率低,不能存储null的key和value

​ properties:常用于配置文件。key-value都要使用String类型

public class MapTest {
    public static void main(String[] args) {
        HashMap hashMap = new HashMap();
        hashMap.put("A", 123);
        hashMap.put("A1", 0);
        hashMap.put("A2", 7);
        hashMap.put("A3", 5);
        hashMap.put("A4", 4);
        Set set = hashMap.entrySet();
        Iterator iterator = set.iterator();

        while (iterator.hasNext()) {
            Map.Entry entry = (Map.Entry) iterator.next();
            System.out.println(entry.getKey() + "-------" + entry.getValue());
        }
        System.out.println(hashMap);

    }
}

Collection是常用的集合接口,用于存储单列集合,有常用的list和set类

Collections操作Collection和Map的工具类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值