Hashtable-Properties-WeakHashMap-IdentityHashMap与EnumMap-容器的同步控制与只读设置

本文介绍了Java中几个重要的容器类:Hashtable、Properties及其区别,讨论了线程安全和只读设置。重点讲解了Hashtable与HashMap的线程安全特性,Properties用于读写配置文件的功能,以及WeakHashMap、IdentityHashMap和EnumMap的特殊用法。同时,还涵盖了容器的同步控制,如Collections的synchronized方法和只读设置。
摘要由CSDN通过智能技术生成

一、Hashtable 与HashMap的区别 (面试题)

  1. 主要:
    Hashtable线程安全,同步,效率相对低下
    HashMap 线程不安全,非同步,效率相对高

  2. 父类:
    Hashtable 是 Dictionary
    HashMap 是 AbstractMap

  3. null:
    Hashtable键与值不能为null
    HashMap 键最多一个null,值可以多个null
    在这里插入图片描述

       public class Hashtable<K,V>
      
       extends 
       Dictionary<K,V>
      
       implements 
       Map<K,V>, 
       Cloneable, 
       Serializable
       此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。
       为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。
    

在这里插入图片描述

public class HashMap<K,V>
     
      extends 
      AbstractMap<K,V>
       
      implements 
      Map<K,V>, 
      Cloneable, 
      Serializable
      基于哈希表的 Map 接口的实现。
      此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)
      此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

在这里插入图片描述
类Properties是Hashtable的子类

  1. 作用:读写资源配置文件
  2. 键与值只能为字符串
  3. 方法:

Object setProperty(String key, String value) ——调用 Hashtable 的方法 put。
String getProperty(String key) ——用指定的键在此属性列表中搜索属性。
String getProperty(String key, String defaultValue) ——用指定的键在属性列表中搜索属性。

package com.bjsxt.others.pro;

import java.util.Properties;

/**
 * Properties 资源配置文件的读写
 * 1、key 与value 只能为字符串
 * 2、存储与读取
 * setProperty(String key, String value) 
 * getProperty(String key, String defaultValue)  
 * @author Administrator
 *
 */
public class Demo01 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//创建对象
		Properties pro =new Properties();
		//存储
		pro.setProperty("driver", "oracle.jdbc.driver.OracleDriver");
		//pro.setProperty("url", "jdbc:oracle:thin:@localhost:1521:orcl");
		pro.setProperty("user", "scott");
		pro.setProperty("pwd", "tiger");
		
		//获取
		String url =pro.getProperty("url","test");
		System.out.println(url);
	}

}
结果:test

后缀:.properties
store(OutputStream out, String comments)
store(Writer writer, String comments)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值