一、Hashtable 与HashMap的区别 (面试题)
-
主要:
Hashtable线程安全,同步,效率相对低下
HashMap 线程不安全,非同步,效率相对高 -
父类:
Hashtable 是 Dictionary
HashMap 是 AbstractMap -
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的子类
- 作用:读写资源配置文件
- 键与值只能为字符串
- 方法:
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)