Java 的集合类:(常用为vector ArrayList stack linkedlist HashMap hashtable)

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)


对于集合的几点总结:

  1. a 如果要求线程安全,则使用vector、hashtable
  2. b 如果不要求线程安全,应该使用ArrayList、linkedlist、hashmap
  3. c 如果要求键值对存储  则使用hashmap、hashtable
  4. d 如果数据量很大,又需要考虑线程安全  则使用vector
     

猜你喜欢

转载自blog.csdn.net/qq_28619473/article/details/88787807