请教高手,Vector 和 ArriList 得区别 是什么啊? 最好举例说明! 各位通道得朋友,我看了许多关于我同样问题得论坛,可是都没有实际得例子来说明,他们到底有什么区别,什么时候运用呢? 请大家帮我下,我发现面试当中很多地方都是这个问题! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请搜索Vector ArrayList....网络上描述很清楚....建议lz复习线程安全的知识咩.... Vector是线程 安全的而ArrayList不是其它都差不多 线程安全的知识咩....羊```SORRY 昨天刚看过电影《疯羊》,有点过敏 需要考虑线程安全的时候用Vector反之用ArrayList 需要同步的用Vector反之用ArrayList 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。 在单线程运行的情况下,如果 Size = 0,添加一个元素后,此元素在位置 0,而且 Size=1; 而如果是在多线程情况下,比如有两个线程,线程 A 先将元素存放在位置 0。但是此时 CPU 调度线程A暂停,线程 B 得到运行的机会。线程B也向此 ArrayList 添加元素,因为此时 Size 仍然等于 0 (注意哦,我们假设的是添加一个元素是要两个步骤哦,而线程A仅仅完成了步骤1),所以线程B也将元素存放在位置0。然后线程A和线程B都继续运行,都增加 Size 的值。 那好,现在我们来看看 ArrayList 的情况,元素实际上只有一个,存放在位置 0,而 Size 却等于 2。这就是“线程不安全”了。 需要线程同步时用Vector,保证线程安全,不考虑线程同步和安全时可以用ArrayList 建议使用ArrayList 瞎扯! ArrayList在任何方面都比Vector强!至于ArrayList为什么不是线程安全的, 这是由Java 1.3以后的新集合类的设计方式决定的, Java 1.3加入的新集合类默认都不是线程安全的. 因为可以用Collections.SynchronizedCollection()方法得到任何集合类的线程安全版本.在一个不需要兼容java 1.3以前版本的程序中, 请放弃使用Vector, Stack和Hashtable这些遗留类. 它们的问题很多. Vector是线程同步的ArrayList是线程不同步的 这么说对vector操作是一个原子操作,而对arraylist操作不是一个原子操作? 已经有很多年没用Vector和Hashtable了,事实上我根本不用这两个类。包括Collections.SynchronizedCollection()也从来不用。Vector就能保证线程安全吗?看看这段代码public Object getFirst(Vector v){ if (v.size() > 0) return v.remove(0); else return null;}public List getList(Hashtable map,Object key){ if(map.containsKey(key)) return (List)map.get(key); ArrayList ar = new ArrayList(); map.put(key,ar); return ar;}问题:上面的代码是线程安全的吗?问题出在哪里?用Collections.SynchronizedCollection就能保证线程安全吗? 两者都是使用数组的方式存储数据,唯一的区别在于:Vector使用了Synchronized方法,所以在效率上不如ArrayList~~~ 求助,按钮添加ActionListener点击没反应 JAVA DES CBC算法 谁可以提供源码!!感谢!! 模拟显示器字符显示过程 瑞星软件中怎么连接到网页,显示网页的内容.JFRAME中点JBUTTON怎么连接到网页中,象瑞星软件那样 ,你们都知道点瑞星软件中的SUPPORT就可以 发现一个小问题,进来给个建议或意见 有没有好的方法,不用正则表达式,判断用户输入的字符串是否为数字, 如何知道一个对象(如:Vector的对象)所占用的内存的大小? 属于概念不清的一个简单的问题! 请教!String型向float型转化问题 初学JAVA 大家照顾照顾 警惕!!!!!!!!!!!!!
建议lz复习线程安全的知识咩....
而ArrayList不是
其它都差不多
反之用ArrayList
反之用ArrayList
比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。 在单线程运行的情况下,如果 Size = 0,添加一个元素后,此元素在位置 0,而且 Size=1;
而如果是在多线程情况下,比如有两个线程,线程 A 先将元素存放在位置 0。但是此时 CPU 调度线程A暂停,线程 B 得到运行的机会。线程B也向此 ArrayList 添加元素,因为此时 Size 仍然等于 0 (注意哦,我们假设的是添加一个元素是要两个步骤哦,而线程A仅仅完成了步骤1),所以线程B也将元素存放在位置0。然后线程A和线程B都继续运行,都增加 Size 的值。
那好,现在我们来看看 ArrayList 的情况,元素实际上只有一个,存放在位置 0,而 Size 却等于 2。这就是“线程不安全”了。
建议使用ArrayList
Vector是线程同步的
ArrayList是线程不同步的
而对arraylist操作不是一个原子操作?
包括Collections.SynchronizedCollection()也从来不用。
Vector就能保证线程安全吗?看看这段代码
public Object getFirst(Vector v)
{
if (v.size() > 0)
return v.remove(0);
else
return null;
}
public List getList(Hashtable map,Object key)
{
if(map.containsKey(key))
return (List)map.get(key);
ArrayList ar = new ArrayList();
map.put(key,ar);
return ar;
}问题:上面的代码是线程安全的吗?问题出在哪里?
用Collections.SynchronizedCollection就能保证线程安全吗?
Vector使用了Synchronized方法,所以在效率上不如ArrayList~~~