ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized 方法(线程安全),通常性能上较ArrayList 差,而LinkedList 使用双向链表实现存储(将内存中零散的内存单元通过附加的引用关联起来,形成一个可以按序号索引的线性结构,这种链式存储方式与数组的连续存储方式相比,其实对内存的利用率更高),按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。Vector属于遗留容器(早期的JDK中使用的容器,除此之外Hashtable、Dictionary、BitSet、Stack、Properties都是遗留容器),现在已经不推荐使用,但是由于ArrayList和LinkedListed都是非线程安全的,如果需要多个线程操作同一个容器,那么可以通过工具类Collections中的synchronizedList方法将其转换成线程安全的容器后再使用(这其实是装潢模式最好的例子,将已有对象传入另一个类的构造器中创建新的对象来增加新功能)。
补充:遗留容器中的Properties类和Stack类在设计上有严重的问题,Properties是一个键和值都是字符串的特殊的键值对映射,在设计上应该是关联一个Hashtable并将其两个泛型参数设置为String类型,但是Java API中的Properties直接继承了Hashtable,这很明显是对继承的滥用。这里复用代码的方式应该是HAS-A关系而不是IS-A关系,另一方面容器都属于工具类,继承工具类本身就是一个错误的做法,使用工具类最好的方式是HAS-A关系(关联)或USE-A关系(依赖)。同理,Stack类继承Vector也是不正确的。
保存list到mysql数据库 list存储
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java list保存数据库 java list存储对象
一、为什么使用集合而不是数组1、集合和数组相似点都可以存储多个对象,对外作为一个整体存在2、数组的缺点长度必须在初始化时指定,且固定不变数组采用连续存储空间,删除和添加效率低下数组无法直接保存映射关系数组缺乏封装,操作繁琐二、Java集合的总体结构1、List集合、Map集合数据的特点2、List的应用示例1:ArrayList list=new ArrayList();list.add(111
java list保存数据库 java 8 list对象属性判空 java list 复制到另一个list java list 转 map java list 转map -
python 存储list到本地 python将list存入数据库
listlist(列表)是Python内置的一种数据类型,它是一种有序、可变的集合,可以随时添加和删除其中的元素。 变量classmates就是一个list。关于list的操作如下:方法len():获取list元素的个数 通过索引访问 append:向list末尾追加元素 insert:把元素插入到指定的索引 pop():删除末尾的元素
python 存储list到本地 access数据放到list中 js list删除指定元素 python list中分段 python 删除set指定值