谈谈对集合的理解

集合

Java集合框架图

​ Java集合是java提供的一个工具包,全部继承自java.util.*。主要包括两大接口Collection接口和Map接口以及相关的工具类(Iterator迭代器接口、Enumeration枚举类、ArraysColletions)。

(1)Collection是一个接口,包含List列表和Set集合。其中List是有序的队列,元素值可以重复,索引从0开始,实现类有LinkedListArrayListVector;而Set是一个不允许有重复元素的集合,Set的实现类有HashSetTreeSetHashSet依赖于HashMap,它实际上是通过HashMap实现的;TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。
(2)Map是一个映射接口,通过key-value键值对实现。实现类有HashMapTreeMapWeakHashMapHashtable
(3)Iterator是遍历集合的工具,Enumeration也是遍历集合,但它的的功能要比Iterator少,只能在Hashtable, Vector, Stack中使用。
(4)Arrays和`Collections是操作数组、集合的两个工具类。

下面是具体一点的比较:
(1) ArrayList, LinkedList, Vector, Stack是List的4个实现类,比较他们的异同。

1)ArrayList 是一个数组队列,相当于动态数组。它由数组实现,随机访问效率高,随机插入、随机删除效率低。默认大小是10元素

2)LinkedList 是一个双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList随机访问效率低,但随机插入、随机删除效率高。

3)Vector 是矢量队列,和ArrayList一样,它也是一个动态数组,由数组实现。但是ArrayList是非线程安全的,而Vector是线程安全的。

4)Stack 是栈,它继承于Vector。它的特性是:先进后出(FILO, First In Last Out)。

(2)HashMapHashTableTreeMap的区别

1)HashMap是键值对的方式存储的,但不能保证次序,单线程;默认大小16、 默认扩容因子为0.75, 结构1.7之前(数组+链表)、1.8之后(数组+链表+红黑树)

HashMap在JDK1.8及以后的版本中引入了红黑树结构,若桶中链表元素个数大于等于8时,链表转换成树结构;若桶中链表元素个数小于等于6时,树结构还原成链表。因为红黑树的平均查找长度是log(n),长度为8的时候,平均查找长度为3,如果继续使用链表,平均查找长度为8/2=4,这才有转换为树的必要。链表长度如果是小于等于6,6/2=3,虽然速度也很快的,但是转化为树结构和生成树的时间并不会太短。

还有选择6和8,中间有个差值7可以有效防止链表和树频繁转换。假设一下,如果设计成链表个数超过8则链表转换成树结构,链表个数小于8则树结构转换成链表,如果一个HashMap不停的插入、删除元素,链表个数在8左右徘徊,就会频繁的发生树转链表、链表转树,效率会很低。

2)HashTableHashMap存储方式相同,但是是线程安全的;

3)TreeMap是有序的键值对,基于红黑树排序。

时间范围:1942 年至2024年2月时间精度:近年的数据大多为 3 小时数据,少量站点有 1 小时数据。站点数量:近年为 400 多个。气象要素:气温、气压、露点、风向风速、云量、降水量。 按年打包文件 china_isd_lite_****.zip 解压后是几百个站点数据文件,每个文件是单个站点全年的数据。文件名如“552990-99999-2000”,第 1 段数字是站点 ID,第 3 段数字是年份。 数据格式 ISD-Lite,是简化的 ISD(Integrated Surface Data)数据。每列固定宽度,非常易于程序解析,也可直接当做“空格分隔的 CSV”使用。具体每列的含义及数据格式见isd-lite-format.txt,有详细解释。时间是 GMT 时间。 站点 ID 和站点名、经纬度的对应关系见 isd-history.csv,该列表各列含义见 isd-history.txt文件开头。isd-history.csv 里包含了所有用到过的站点,包括大量现在已经不在使用的。经纬度是 WGS-84 坐标系。国家 ID 列表见 country-list.txt。本站数据只包含了国家 ID 为 CH、HK、MC、TW 的站点。 另附一份中文的站点列表“中国地面气象站基本气象要素观测资料台站表.pdf” 数据源为 NCDC(美国国家气候数据中心,National Climatic Data Center),隶属于 NOAA(美国国家海洋及大气管理局,National Oceanic and Atmospheric Administration)。ftp://ftp.ncdc.noaa.gov/pub/data/noaa/isd-lite/,本站只选取了中国区域(含港澳台)的观测站点数据,重新按年打包。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值