Java 的集合类:(常用为vector ArrayList stack linkedlist hashmap hashtable)
关于Arraylist的使用说明在demo25、demo26中
关于linkedlist的使用说明在demo27
关于vector的使用说明也在demo27
- list类的几个代表(ArrayList linkedlist vector stack )
vector 和 ArrayList的区别
1 同步性 vector是同步的。这个类中的一些方法保证了vector中的对象是线程安全的,而ArrayList是异步的,他的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用ArrayList是一个很好的选择。这样可以避免由于同步所带来的不必要的性能开销,从而提高效率。
2 数据增长
当数组数目超出原来内部数组所分配的长度时,vector在缺省情况下自动增长为原来数组长度的一倍,ArrayList是增长原来的50%。如果需要存放大量的数据时 建议使用vector。
- map类的几个代表(hashmap hashtable)在demo28解释 两种在用法上很相似 相同点:都是Java的集合类,都可以用来存放Java对象
HashMap和Hashtable区别是:
1 (历史原因)
hashtable是基于陈旧的dictionary类的 hashmap是Java1.2引进的map接口的一个实现
2 (同步性) hashtable是同步的。这个类中的一些方法保证了hashtable中的对象是线程安全的,而hashmap是异步的,他的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用hashmap是一个很好的选择。这样可以避免由于同步所带来的不必要的性能开销,从而提高效率。
3 (Key值能否为空)
hashmap可以让你将空值作为一个映射的key或者value。但是hashtable是不能够放入空值的(null)
对于集合的几点总结:
- a 如果要求线程安全,则使用vector、hashtable
- b 如果不要求线程安全,应该使用ArrayList、linkedlist、hashmap
- c 如果要求键值对存储 则使用hashmap、hashtable
- d 如果数据量很大,又需要考虑线程安全 则使用vector