博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java Se :线性表
阅读量:7282 次
发布时间:2019-06-30

本文共 806 字,大约阅读时间需要 2 分钟。

 Java的集合框架分为两个系列,Collection和Map系列。在大学期间,学习数据结构时,好像学习了线性表、非线性表、树,哎,都给忘了。其实,在Collection系列内部又可以分为线性表、集合两大类。

 

常用的线性表有:ArrayList、LinkedList、Vector、Stack、Queue。

其中Stack、Queue是特殊的线性表。他们的特殊性表现在:

Stack是先进后出,FILO,也叫后进先出:LIFO。

Queue是先进先出,FIFO。

 

Collection系列中还有Set集。他们的实现比较复杂。后续将说明。

 

另外一个系列是Map,Dictionary为代表的<Key, Value>集合,具体如何实现,将在后续说明。

 

ArrayList

正如它的名字一样,JDK中确实是使用数组实现的。elementData就是。

 

 

另外,这个类中也提供了直接转为数组的方法:

 

 

 

数组的特征是可以快速查询,但是插入、删除操作不方便。

 

LinkedList

 

看到这个名字,你可能会想到他是个单链表。如果这样想,只能说是对了一半。它确实是个链表,但不是一个单链表,而是一个双向链表。

 

下面看看源码:

 

 

看看这个Entry<K>到底是个什么玩意:

 

如果是单链表,有next就可以了,而不需要有previous。

双向链表的特征是:查找不方便,增删方便。

 

Vector

 

Vector汉语意思是向量,从名字上就可以知道是一个可变的集合。它是一个可变数组。

 

 

它和ArrayList都采用数组实现,但是他俩个有明显的区别,而这个问题也是面试时常会考到的问题。

 

Stack

Stack,后进先出,也就是说每次取数,都是取出最后一个。

这个特性实现起来一点也不难,使用数组就可以实现了。接下来看看JDK中是如何实现的:

 

 

JDK中也是使用数组的。

 

 

Queue

 

这是一个接口,在并发编程中使用很多。下面列出了Queue的实现类:

 

 

转载地址:http://vlzjm.baihongyu.com/

你可能感兴趣的文章
AI一周热闻:12306数据泄露,嫌疑人被捕;BERT提升文档检索性能至1.5-2倍
查看>>
知道大数据却不清楚工业大数据,知识架构“欠”在哪里?
查看>>
MySQL删库出错
查看>>
BUG管理系统(Mantis)迁移实录
查看>>
这才是 TensorFlow 自带可视化工具 TensorBoard 的正确打开方式!(附项目源码)
查看>>
诺基亚推出认知型云平台AVA,为运营商提供快速无误的服务
查看>>
《Spring Cloud Netflix》-- 服务注册和服务发现-Eureka的服务认证和集群
查看>>
新华三集团执行副总裁叶健离职
查看>>
赫迈泽牵手苹果Homekit,预定中国智能家居用户1.75亿?
查看>>
《数据挖掘:实用案例分析》——2.2 聚类
查看>>
《深入理解C++11:C++ 11新特性解析与应用》——1.4 C++特性一览
查看>>
说好碾压SSD降价呢?Intel Optane硬盘无限延期
查看>>
列举业界关于WiFi的十大常见误解
查看>>
智能家居让你当“甩手掌柜”
查看>>
《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.7 与建立人机交互界面相关的外设的中断服务程序挂接...
查看>>
Android网络安全性配置
查看>>
菲律宾抓获一名攻陷选举委员会网站的黑客
查看>>
改善云迁移安全性最有效的三种方法
查看>>
德仪第三季度营收36.75亿美元 利润9.68亿美元
查看>>
OpenDaylight执行董事Neela Jacques:SDN/NFV是未来网络的关键
查看>>