本文主要是介绍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 类
这篇关于Java重修笔记 第四十七天 HashTable 类、Properties 类、如何选择集合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!