栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数组和集合的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数组和集合的区别

9.数组和集合的区别

集合:单列集合Collection接口、双列集合Map

 

 

ListSetMap
存储元素的特点有序可重复(下标0开始)无序不可重复无序不可重复
ArrayList(非线程安全---数组)、linkedList(非线程安全---双向链表)、Vector(线程安全---数组)、HashSet(非线程安全---哈希表)、SortedSet(TreeSet(非线程安全---二叉树))HashMap(非线程安全---哈希表)、SortedMap(TreeMap(非线程安全---二叉树))、HashTable(线程安全---哈希表)(Properties(线程安全))、
数组集合
大小固定大小可动态扩展
只能存储相同数据类型的数据可以存储各种类型的数据
数组转集合集合转数组
Arrays.asList(数组)集合.toArray()

List

ArrayList(非线程安全---数组)

linkedList(非线程安全---双向链表)

Vector(线程安全---数组)

Set

HashSet(非线程安全---哈希表)

SortedSet(TreeSet(非线程安全---二叉树))

Map

HashMap(非线程安全---哈希表)---最多只允许一条记录的键为Null,允许多条记录的值为Null

----不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导 致数据的不一致。如果需要同步,可以用Collections的synchronizedMap 方法使HashMap具有同步的能力

-----无序

-------hash数组的默认大小是16,而且一定是2的指数

SortedMap(TreeMap(非线程安全---二叉树)-----能够把它保存的记录根据键排序,默认是按升序排序,也可以 指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。)

------有序

HashTable(线程安全---哈希表)------不允许null值,key和value都不可以

------线程同步

-------无序

------hash数组默认大小是11,增加的方式是 old*2+1

(Properties(线程安全))

13.HashTable,TreeMap和HashMap的区别(上图)

14.ArrayList、linkedList、Vector的区别

存储方式:ArrayList和Vector均采用数组,linkedList采用了双向链表

采用数组方式插入数据慢(数组元素移动)、查询速度快(有下标),又因为Vector使用了 synchronized方法-线程安全,其性能要比ArrayList差

双向链表:按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项前后项即可, 插入数据较快

同步性:Vector是同步的(带来性能开销),线程安全的

ArrayList是异步的,线程不安全

建议使用一个简单的数组(Array)来代替Vector或ArrayList。尤其是对于执行效率要求高的程序更应如此。因为使用数组(Array)避免了同步、额外的方法调用和不必要的重新分配空间的操作。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459508.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号