Vector类与ArrayList是相似滴,都是实现数组的动态改变(动态数组),不同的是Vector类是同步的而ArrayList类是非同步的。那么何为同步,何为非同步呢???

java中的同步

  • 同步

指多个线程在同时要访问某个对象、某个变量。某个方法、某个代码块等等时,保证只有唯一线程访问同步对象(即synchronized修饰的部分)

相关方法说明:

remove()方法  : 移除第一个与其匹配的向量元素。

add()方法  :添加的元素若相同,他们的ID内存地址会指向同一块地方,即事实上是添加了一个指向相同地址的引用变量,当然删除时还是删除第一个与其匹配的元素,即少一个指向这块地址的引用变量。

关于数组列表ArrayList的认识

 

对ArrayList 对象进行增添,删除操作时。越靠近末尾操作越快。好像压栈样,因为末尾后添加进去,至于栈顶部,操作时当然更快啦。。

ArrayList串行化

概念指的是:将对象储存到介质(文件、内在缓冲区等)中或是以二进制方式通过网络传输
反串行化:是将这些连续的字节(Byte)数据重构成与原始对象状态相同的对象。。。要实现Serializable 接口(它没有什么方法,仅是告诉JVM要进行特殊操作了。)
 
我的理解:串行化就是将ArrayList对象变成连续字节(Byte)或储存在文件,或写到缓冲区,或用于网络传输(传输的就是字节
流) ----拆散对象的过程
。反之反串行化就是将字节流变回ArrayList对象()   ---转配对像的过程
 
ArrayList 的克隆方法,与别名的区别
 
ArrayList <String >list =  new ArrayList<String> ();
 
list.add("a");
list.add("b");
list.add("c");
 
ArrayList<String> temp = (ArrayList)list.clone();
 
ArrayList <String > samelist = list ;
 
list 与samelist  是指向一块内存区域ArrayList对象的引用变量,操作任何一个都会改变该对象。
 
temp   是list 的副本,二者没有影响的关系。。。
Fail-Fast迭代器
 
迭代器一旦开始对一个ArrayList对象进行迭代,就不能再修改这个ArrayList对象。否则就可能会损害迭代器的完整性。这样的迭代器是“即时错误”(fail-fast)的
 
ArrayList 类的trimToSize方法--将用于最小化ArrayList对象的实例变量。。以下例来说嘛:
  ArrayList<String > list = new ArrayList<String>(10);

  list.add("first");

  list.add("second");

  list.add("third");

  list.add("fourth");

此时ArrayList的list 对象只有四个真正的实例变量,size 当然是4但是初始化list对象是分配了10个给list用,那么有6个是null。显然这样肯定浪费了资源。

list.trimToSize() ;

此时因为调用了trimToSize方法,list 的那6个剩余的空间被JVM回收掉了。。。。。。。。。因此我们就说trimToSize方法--用于最小化ArrayList对象的实例变量。。

 

posted on 2012-08-02 16:03  Coffee_Guy  阅读(599)  评论(1编辑  收藏  举报