}
return instance;
}
}
其他形式:
定义一个类,它的构造函数为 private 的,所有方法为 static 的。
一般认为第一种形式要更加平安些。
47、Hashtable 和 HashMap 的区别:
Hashtable 继承自 Dictionary 类,而 HashMap 是 Java1.2 引进的 Map
interface 的一个实现
HashMap 是 Hashtable 的轻量级实现〔非线程平安的实现〕,他们都完成了
Map 接口,主要区别在于 HashMap 允许空〔null〕键值〔key〕,由于非线程平安,
效率上可能高于 Hashtable。
HashMap 允许将 null 作为一个 key 或者 value,而 Hashtable 不允许 .
还有就是,HashMap 把 Hashtable 的 contains 方法去掉了,改成
containsvalue 和 containsKey。因为 contains 方法容易让人引起误解。
最大的不同是,Hashtable 的方法是 Synchronize 的,而 HashMap 不是,在
多个线程访问 Hashtable 时,不需要自己为它的方法实现同步,而 HashMap 就必
须为之提供外同步。
Hashtable 和 HashMap 采用的 hash/rehash 算法都大概一样,所以性能不会有很
大的差异
48、作用域 public,private,protected,以及不写时的区别:
高级访问控制总结:
访问控制 private 成 缺省的成员 protected 成 public 成员
员 员
同一类中成员
同一包中其他类 ×
不同包中子类 ×
不同包中非子类 ×
×
×
×
49、ArrayList 和 Vector 的区别,HashMap 和 Hashtable 的区别:
就 ArrayList 与 Vector 主要从二方面来说.
1.同步性:Vector 是线程平安的,也就是说是同步的,而 ArrayList 是线程
序不平安的,不是同步的
2.数据增长:当需要增长时,Vector 默认增长为原来一培,而 ArrayList 却是
原来的一半
就 HashMap 与 HashTable 主要从三方面来说。
1.历史原因:Hashtable 是基于陈旧的 Dictionary 类的,HashMap 是 Java 1.2
引进的 Map 接口的一个实现
2.同步性:Hashtable 是线程平安的,也就是说是同步的,而HashMap 是线程
序不平安的,不是同步的