java集合的存储特征_JAVA校招题基础知识点复习第六天(一张图搞懂所有集合特点)...

集合其实和数组一样都是java中提供的一种容器,可以用来存储多个数据。

既然集合和数组都容器,那么他们有什么区别呢?

1、数组的长度是固定的,集合的长度是可变的。

2、数组中存储的是同一类型的元素,可以存储基本数据类型值。

3、集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。

了解完集合与数组的区别,让我们来看看在JAVA中都为我们提供了哪些集合?

在JAVA中,集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map。Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set。同样、Map:键值对集合的根接口,用于存储一系列键值对元素,它也有一些重要的子接口。下面就让我们用一张图来说清楚Collection和Map子接口的特点。

9b3013cb755c2833443553b5e898a5ca.png根据JDK1.8中的API总结

看完上图所有子接口的特点后,再让我们仔细讨论一下常用子接口ArrayList和LinkedList以及HashMap和Hashtable的区别:ArrayList和LinkedList都实现了List接口,他们有以下的不同点:ArrayList是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。与此对应,LinkedList是以元素列表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)。相对于ArrayList,LinkedList的插入,添加,删除操作速度更快,因为当元素被添加到集合任意位置的时候,不需要像数组那样重新计算大小或者是更新索引。LinkedList比ArrayList更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素。

HashMap和Hashtable有的区别:

HashMap是非线程安全的,HashTable是线程安全的。

HashMap的键和值都允许有null值存在,而HashTable则不行。

因为线程安全的问题,HashMap效率比HashTable的要高。

Hashtable是同步的,而HashMap不是。

因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。

一般现在不建议用HashTable, ①是HashTable是遗留类,内部实现很多没优化和冗余。②即使在多线程环境下,现在也有同步的ConcurrentHashMap替代,没有必要因为是多线程而用HashTable。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值