HashTable、Properties、TreeSet及如何选择集合实现类详解
HashTable、Properties、TreeSet详解及如何选择集合实现类
1. HashTable说明
- 存放的是键值对,即 k - v
- hashTable的键和值都不能为null,否则会抛出NullPointerException
- hashTable使用方法基本上和HashMap一致
- hashTable是线程安全的(synchronized),hashMap是线程不安全的
2. Properties类说明
1. 基本介绍
- Properties类继承自HashTable类并且实现了Map 接口,也是一种键值对的形式来保存数据
- 它的只用特点和HashTable类似
- Properties还可用于从 xx.properties文件中,加载数据到Properties类对象,并进行读取和修改
- 说明:xx.properties文件通常作为配置文件
3. 如何选择集合实现类
- 选择什么集合实现类,主要取决于业务操作特点
-
先判断存储的类型(一组对象【单列】或一组键值对【双列】)
-
一组对象【单列】:Collection接口
-
允许重复:List
- 增删多:LinkedList(底层维护了一个双向链表)
- 改查多:ArrayList(底层维护了Object类型的可变数组)
-
不允许重复: Set
- 无序:HashSet (底层是HashMap,维护了一个哈希表即数组+链表+红黑树)
- 排序:TreeSet
- 插入和取出顺序一致:LinkedHashSet,数组+双向链表
-
-
一组键值对【双列】:Map
- 键无序:HashMap
- 键排序:TreeMap
- 键插入和取出顺序一致:LinkedHashMap
- 读取文件:Properties
4. TreeSet说明
- 当我们使用无参构造器创建TreeSet时,任然是无序的
- 希望在添加元素时,按照字符串大小进行排列
- 则使用TreeSet提供的一个构造器,可以传入一个比较器(匿名内部类),并指定排序规则