arraylist和vector有啥区别 还有 this 和接口有什么具体作用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ArrayList和Vector,在多数情况下都是可以互换的,ArrayList不是线程安全的,Vector是,但是前者用的更多。 我建议你看下Core Java 1的集合和接口那一章。你就能知其所以然。 楼上正解从性能考虑,不存在线程安全ArrayList略优于Vectorjava文档上会有详细说明。 ArrayList和Vector,在多数情况下都是可以互换的,ArrayList不是线程安全的,Vector是,但是前者用的更多。好 现在已经提示Vector过时了。感觉arraylis用起来麻烦些。有些地方不方便。 Vector是JDK1.0版本中的集合类,从JDK1.2版本开始,逐渐用ArrayList和LinkedList代替Vector ArrayList效率高于Vector,尽量用ArrayList。而Vector不建议使用了。所以其实这样的话,就没啥可以问的了。 Vector是线程安全的,要是有多线程的程序,就应该用Vector吧 Vector不推荐使用了,可以看看《编程思想》,里面有详细介绍。推荐使用ArrayList和LinkedList ArrayList不是线程安全的,Vector是线程安全的 除了同步之外:ArrayList 在内部数组容量不够的时候会扩充 50%,并且扩充量不能自行给定!Vector 在不给定扩充量(两个 int 构造的第二个参数)时,会扩充原来大小的 100% ArrayList不是线程安全的,Vector是线程安全的 ArrayList是线程不安全的,Vector是线程安全的,这个大家都知道。因为Vector是线程安全的,所有在Vector当中的所有方法也都是线程安全的,所有在使用它的时候非常占用空间,会导致效率降低25%左右。在以前我们需要使用多线程的时候我们一般情况下使用它,但是在现在jdk1.2版本上的使用Collections.sychronizedList(list)返回一个线程安全的List,请查API中的Collections类其他地方,两者都是相同的。interface可以看成是一个插件,功能是增加一些类的功能。this指的是当前。功能一是在出现多个相同名字的对象引用或者数据时,可以使用它指定我使用当前最近的需要的一个对象引用或者数据。功能二指定当前相同重载方法的一种直接引用。以上是我个人理解。谢谢 ls说的好!不过大家貌似用ArrayList用的比较多。这线程本来就不安全@这是为什么呢? ArrayList不是线程安全的,Vector是线程安全的 ArrayList是非线程安全的,vector是线程安全的;当需要增长是,Arraylist增长为原来的一半,vector增长为原来的一倍 this可用来指向当前对象.或者说在一个对象内部用this 关键字可用来指向对象本身.接口[/b][b]则是 以interface 为关键字.相当于一个抽象类.内部只有一些空的方法或空的构造函数继承接口则需要重写这些方法或构造函数. 就ArrayList与Vector主要从二方面来说.一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 ArrayList不是线程安全的,Vector是线程安全的 建议这些概念性的东西 自己先看书 当看书的时候有不懂的地方在问 现在就算thinking java的作者来给你说也说不清 同步性Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 奉劝楼主买本JAVA编程思想看看,里面基础知识讲的很详细,对你会很有帮助的。 Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。 Vector继承自AtrastractList,实现了 Serializable, Cloneable, Iterable, Collection, List, RandomAccess 的接口。 每个Vector会试图通过维护 capacity 和 capacityIncrement 来优化存储管理。capacity 始终至少应与向量的大小相等;这个值通常比后者大些,因为随着将组件添加到向量中,其存储将按 capacityIncrement 的大小增加存储块。应用程序可以在插入大量组件前增加向量的容量;这样就减少了增加的重分配的量。 构造函数Vector(),实现一个空向量,其内部数组大小为10,标准容量增量为0。 目前看来,Vector和ArrayList很像,二者的区别可参见以下比较 Vector 和 ArrayList的不同 有的时候 Vector更好一些;有的时候ArrayList 更好一些;有的时候你一个也不想用。但愿,你不是在期望一个简单明了的答案,因为答案因你在用他们做什么而定。下面是要考虑的四个方面: API 同步-Synchronization 数据增长-Data growth 使用方法-Usage patterns 让我一个一个来解释吧。 API 在The Java Programming Language (Addison-Wesley, June 2000) 中Ken Arnold, James Gosling, 和 David Holmes 是这样描述Vector的,它是更ArrayList类似的一个东西,所以从API的观点来看,它们俩是很相似的。但是,它们之间还是有些微的差别的。 Synchronization Vectors是可同步化的,意思就是说,任何操作Vector的内容的方法都是线程安全的,相反的,另一方面,ArrayList是不可同步化的,所以也不是线程安全的。如果你知道了这些的话,你就会发现,Vector的同步会让它在性能发方面有一些小问题。所以,如果你不需要线程安全的话,那么就使用ArrayList吧。为什么要为没有必要的同步付出代价呢? Data growth 实际上,不管是ArrayList还是Vector,在它们内部都是使用一个Array来保存数据的。编程过程中,在使用它们任何一个的时候,你都需要记住这一点。你在往一个ArrayList或者Vector里插入一个元素的时候,如果内部数组空间不够了,这个对象(译者按:指的是你使用的ArrayList或者Vector)就要扩展它的大小。Vector在默认情况下是产生一个双倍大小,而ArrayList增加50%的大小。只要你合理的使用这些类,你就可以结束你在增加新的元素的时候所付出的性能代价。把对象(译者按:指的是你使用的ArrayList或者Vector)的初始化容量指定为你编程过程中所能用到的最大的容量总是最好的办法。仔细的指定容量,你可以避免以后改变内部Array容量,所要付出的代价。如果你并不知道到底有多少个数据,但是你知道数据的增长率,Vector确实有一点点优势,因为你可以指定增加值(译者按,如果没有猜错的话,作者说的方法应该是setSize(int newSize) Sets the size of this vector.)。 Usage patterns ArrayList和Vector在从指定位置取得元素,从容器的末尾增加和删除元素都非常的有效,所有的这些操作都能在一个常数级的时间(O(1))内完成。但是从一个其他的位置增加和删除一个元素就显得颇为费时,差不多需要的时间为O(n-i),这里的n代表元素个数,i代表要增加和删除的元素所在的位置。这些操作需花费更多的时间,因为你需要挨个移动i和更高位置的元素。那么,以上这些到底说明了什么呢? 这意味着,如果你取得一个元素,或者从数组末尾增加或删除一个元素的话,随便你使用Vector和ArrayList。如果你想要对数组内容做其他操作的话,那么就为自己找另一个容器吧。比如说,LinkedList可以在常数级时间(O(1))内为任意一个位置的元素增加和删除。但是,取得一个元素,会稍微慢一点,时间要用O(i) ,这个i是元素的位置。通过ArrayList也是很简单的,因为你可以简单使用一个索引,而不是构造一个iterator 。LinkedList也为每个插入的元素建立一个内部对象。所以,你也必须知道,同时产生了垃圾对象。 最后,Practical Java (Addison-Wesley, Feb. 2000) Peter Haggar 里的“实践41“建议你使用一个普通的原始的数组来代替Vector和ArrayListe,特别是对效率优先的代码来说。通过使用数组(array),你可以避免同步,额外的方法调用,非理想化的大小改变。你付出的只是额外的开发时间 ZipInputStream报java.lang.IllegalArgumentException j2sdk1.4.2-0-6目录下的哪些子目录文件代表jvm java 如何使用使用较大的整数? 移动图片后坐标的获取问题 两种写法效率一样吗 请教算法问题::??希望各位帮忙!!!谢谢!!! 这里有电脑书下载,有没有别的下载地址? 如何在JEDITORPANE中显示文本和图片(混合)!!!!!!!!!!!!!!!!!!! 主键自增字段的值交换问题 Java 存取 Excel:JavaExcelApi 和 POI-HSSF 哪个好? 两个Java程序的区别 JAVA生成一维码图片!
ArrayList不是线程安全的,Vector是,但是前者用的更多。
java文档上会有详细说明。
ArrayList不是线程安全的,Vector是,但是前者用的更多。
好
感觉arraylis用起来麻烦些。有些地方不方便。
Vector 在不给定扩充量(两个 int 构造的第二个参数)时,会扩充原来大小的 100%
因为Vector是线程安全的,所有在Vector当中的所有方法也都是线程安全的,所有在使用它的
时候非常占用空间,会导致效率降低25%左右。在以前我们需要使用多线程的时候我们一般情况下使用它,但是在现在jdk1.2版本上的使用Collections.sychronizedList(list)返回一个线程安全的List,请查API中的Collections类
其他地方,两者都是相同的。
interface可以看成是一个插件,功能是增加一些类的功能。
this指的是当前。功能一是在出现多个相同名字的对象引用或者数据时,可以使用它指定我使用当前最近的需要的一个对象引用或者数据。功能二指定当前相同重载方法的一种直接引用。
以上是我个人理解。谢谢
当需要增长是,Arraylist增长为原来的一半,vector增长为原来的一倍
this可用来指向当前对象.或者说在一个对象内部用this 关键字可用来指向对象本身.
接口[/b][b]则是 以interface 为关键字.相当于一个抽象类.内部只有一些空的方法或空的构造函数继承接口则需要重写这些方法或构造函数.
现在就算thinking java的作者来给你说也说不清
数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半