HashTable

   * HashTable是较早期的使用Hash算法的一种容器结构,现在基本已被淘汰,单线程多使用HashMap,多线程使用ConcurrentHashMap。

   * HashTable继承体系

          - HashTable<K,V>也是一种key-value结构,它继承自Dictionary<K,V>,实现了Map<K,V>和Cloneable以及Serializable接口。

          - HashTable的操作几乎和HashMap一致,主要的区别在于HashTable为了实现多线程安全,在几乎所有的方法上都加上了synchronized锁,而加锁的结果就是HashTable操作的效率十分低下。

   * HashTable与HashMap对比

        (1)线程安全:  HashMap是线程不安全的类,多线程下会造成并发冲突,但单线程下运行效率较高;HashTable是线程安全的类,很多方法都是用synchronized修饰,但同时因为加锁导致并发效率低下,单线程环境效率也十分低;

        (2)插入null: HashMap允许有一个键为null,允许多个值为null;但HashTable不允许键或值为null;

        (3)容量:     HashMap底层数组长度必须为2的幂,这样做是为了hash准备,默认为16;而HashTable底层数组长度可以为任意值,这就造成了hash算法散射不均匀,容易造成hash冲突,默认为11;

        (4)Hash映射 :HashMap的hash算法通过非常规设计,将底层table长度设计为2的幂,使用位与运算代替取模运算,减少运算消耗;而HashTable的hash算法首先使得hash值小于整型数最大值,再通过取模进行散射运算;

   * java.util.Properties   

        -  是HashTable下的实现类,也是一种key-value结构。

        -  Xxx.properties 为Java 语言常见的配置文件,如数据库的配置 jdbc.properties, 系统参数配置 system.properties。

        -  Properties集合中的<key,value>必须都是字符串

        -  Properties集合也是无序不可重复的和HashMap一样有重复数据存入的话会覆盖旧数据

   * Properties 下的常用方法

      ```
import java.util.Hashtable;
import java.util.Properties; public class PropertiesTest01 {
public static void main(String[] args) { //1.创建Properties集合(属性类对象) Properties集合中的<key,value>必须都是字符串,Properties集合也是无序不可重复的和HashMap一样有重复数据存入回覆盖旧数据
Properties properties=new Properties(); //夫类引用指向子类对象 //2.setProperty(String key,String value) 向集合中存入数据
properties.setProperty("18632418755","施歌");
properties.setProperty("13439523164","张三");
properties.setProperty("15631645112","李四"); //3.getProperty(String key) 通过key获取Value
String value=properties.getProperty("18632418755");
System.out.println(value); }
}

最新文章

  1. 简单说说.Net中的弱引用
  2. SpringMVC Controller 介绍
  3. [poj1742]coin
  4. 31.DDR2问题3_waring?
  5. 深入理解asp.net SessionState
  6. JS一定要放在Body的最底部么? 聊聊浏览器的渲染机制
  7. HTML5 Canvas核心技术—图形、动画与游戏开发.pdf8
  8. openerp 报表字段 report_rml_content_data
  9. OpenRisc-48-or1200的SPRS模块分析
  10. MVC 使用jQuery上传文件
  11. Android文件上传与下载
  12. Pycharm快捷键设置(鼠标滚动控制字体大小)
  13. jQuery的基本选择器
  14. Mybatis框架二:增删改查
  15. Flask源码阅读-第四篇(flask\app.py)
  16. pytorch GPU的程序kill后未释放内存
  17. Luogu P2577 [ZJOI2005]午餐
  18. C# winform对话框用法大全
  19. navicat安装步骤
  20. 基于VUE的SPA单页应用开发-加载性能篇

热门文章

  1. 力扣832. 翻转图像-C语言实现-简单题
  2. Django自学计划之集装箱货物运输物流仓储一站式ERP系统
  3. ============================================ 新的开始(前后端分离项目学习Vue+DRF)
  4. 后台用JSONObject接收前端传过来的字符串数组,并转成集合(JSONObject---JSONArray---List)
  5. deepin 340 USB转console线驱动安装及使用
  6. WPF -- 一种实现本地化的方法
  7. 剑指 Offer 55 - II. 平衡二叉树 + 平衡二叉树(AVL)的判断
  8. const修饰符相关
  9. js--this指向的相关问题
  10. String 类的内存 解析