博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vector类与ArrayList类
阅读量:2061 次
发布时间:2019-04-29

本文共 1485 字,大约阅读时间需要 4 分钟。

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

java中的同步

  • 同步

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

相关方法说明:

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

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

 

对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对象的实例变量。

   一般用ArrayList存放,Vector我用的很少。才知道Vector是同步的,ArrayList是非同步的。至于迭代器,那就是另外一件事了。

转载地址:http://ygalf.baihongyu.com/

你可能感兴趣的文章
GridView+存储过程实现'真分页'
查看>>
flask_migrate
查看>>
解决activemq多消费者并发处理
查看>>
UDP连接和TCP连接的异同
查看>>
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>
iOS开发中Instruments的用法
查看>>
iOS常用宏定义
查看>>
被废弃的dispatch_get_current_queue
查看>>
什么是ActiveRecord
查看>>
有道词典for mac在Mac OS X 10.9不能取词
查看>>
关于“团队建设”的反思
查看>>