Chinaunix首页 | 论坛 | 博客
  • 博客访问: 687028
  • 博文数量: 118
  • 博客积分: 2933
  • 博客等级: 少校
  • 技术积分: 1779
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-27 10:16
文章存档

2013年(35)

2012年(27)

2011年(23)

2010年(33)

分类: Java

2013-05-31 13:15:58

 (1)最常用的集合类是List和Map。
      list的具体实现包括ArrayList和Vector。他们是可变大小的列表,比较适合构建,存储和操作任何类型对象的元素列表。List适合按数值索引访问元素的情形。
      Map提供了一个更通用的元素存储发那个发,Map集合类用于存储元素对(键、值对),每个键映射到一个值。
      List以特定次序来持有元素可以有重复元素,Set无法拥有重复元素,内部排序,Map保存key-value值,value可多值

ArrayListVector 

 两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序

1)同步性:

Vector是线程安全的,也就是说是它的方法之间是线程同步的,而ArrayList是线程序不安全的,它的方法之间是线程不同步的。如果只有一个线程会访问到集合,那最好是使用ArrayList,因为它不考虑线程安全,效率会高些;如果有多个线程会访问到集合,那最好是使用Vector,因为不需要我们自己再去考虑和编写线程安全的代码

2)数据增长:

ArrayList与Vector都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间,每次要增加存储空间时,不是只增加一个存储单元,而是增加多个存储单元,每次增加的存储单元的个数在内存空间利用与程序效率之间要取得一定的平衡。Vector默认增长为原来两倍,而ArrayList的增长策略在文档中没有明确规定(从源代码看到的是增长为原来的1.5倍)。ArrayList与Vector都可以设置初始的空间大小,Vector还可以设置增长的空间大小,而ArrayList没有提供设置增长空间的方法。

总结:即Vector增长原来的一倍,ArrayList增加原来的0.5倍。

HashMapHashtable他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable。
  1. Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 
  2.只有HashMap可以让你将空值作为一个表的条目的key或value 

描述一下JVM加载class文件的原来机制?
 JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader是一个重要的java运行时组件,他负责在运行时查找和装入子类文件的类。
阅读(1088) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~