Java重修笔记 第四十七天 HashTable 类、Properties 类、如何选择集合

  • HashTable 类

1. 存放的是键值对 K-V

2. HashTable 的键和值都不能为 null ,否则会报 NullPointerException 异常

3. HashTable 是线程安全的

4. 用法和 HashMap 一样

5. HashTable 底层有 Hashtable$Entry[]类型的数组,第一次添加初始化大小为 11

6. HashTable 每次扩容按照两倍 + 1 的方式扩容

  • HashTable 和 HashMap 比较

1. HashTable 线程安全,但效率较低,不可以存储 null 的键和值

2. HashMap 线程不安全,但效率高,可以存储 null 的键和值

  • Properties 类

1. Properties 类继承自 Hashtable 类并且实现了 Map 接口,也是使用一种键值对的形式来保存数据

2. 因为是 HashTable 的子类,所以继承 HashTable 的所有特性,线程不安全,但效率高,可以存储 null 的键和值

3. Properties 更多用于从 .properties 配置文件中,加载数据到 Properties 类对象,并进行读取和修改

4. 也可以当做普通的 Map 对象,对键值对进行增删改查

  • 开发中如何选择使用哪一种集合实现类

1. 存储一组对象:Collection

        允许重复:List 接口

                增删多:LinkedList 类(底层是双向链表)
                改查多:ArrayList 类(底层是 Object 类型的可变数组)

        不允许重复:Set 接口

                无序:HashSet 类(底层是HashMap,数组 + 链表 + 红黑树的哈希表)
                排序:TreeSet 类
                插入和取出顺序一致:LinkedHashSet (底层是LinkedHashMap,数组 + 双向链表)

2. 存储一组键值对:Map

        键无序:HashMap 类(数组 + 链表 + 红黑树的哈希表)
        键排序:TreeMap 类
        键插入和取出顺序一致:LinkedHashMap 类
        读取文件专用:Properties 类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值