Java学习 · 初识 容器和数据结构
容器和数据结构
- 1. 集合的引入
a) 集合的使用场景:需要将一些相同结构的个体整合到一起时
i. 新闻列表
ii. 邮件列表
iii. 购物车
b) 为什么使用集合不使用数组
i. 相似点
a) 储存多个对象,对外作为一个整体
ii. 数组缺点
a) 长度需要在初始化时就指定
b) 采用连续储存空间,删除和添加元素时效率低下
c) 无法直接保存映像关系
d) 没有封装,使用繁琐
c) 集合架构
i. Java中提供了一套接口和类
ii. 
- 四大接口
a) Collection接口
i. 不唯一,无序的对象
b) List
i. 不唯一,有序的对象
ii. 两个实现
- ArrayList
a) 在内存中分配了连续的空间,实现数组可变长度
b) 优点:遍历元素和随机访问元素小老板较高
c) 缺点:添加和删除元素效率低,按照内容查询效率低
d) 
- LinkedList
a) 采用双向链表储存方式
b) 遍历和随机访问效率较低
c) 添加和删除元素效率较高,在低效率查询下
d) 
常用方法
i. 相比Collection增加了位置操作
ii. 
iii. 
c) Set
i. 唯一,无序的对象
ii. 两种实现
- HashSet
a) 采用哈希表储存结构
b) 添加、插叙、删除速度快
c) 缺点:无序
- LinkedHashSet
a) 采用哈希表储存结构,链表维护次序
b) 有序(添加顺序
- TreeSet
a) 采用二叉树(红黑树)储存结构
b) 有序、查询速度比list快(按内容查询
c) 查询速度没有HashSet快
iii. 方法


d) Map
i. 键值对象,从Key到Value的映射
ii. Key 唯一 无序
iii. Value 不唯一 无序
Java学习 · 初识 容器和数据结构的更多相关文章
- Java学习笔记——浅谈数据结构与Java集合框架(第一篇、List)
横看成岭侧成峰,远近高低各不同.不识庐山真面目,只缘身在此山中. --苏轼 这一块儿学的是云里雾里,咱们先从简单的入手.逐渐的拨开迷雾见太阳.本次先做List集合的三个实现类的学习笔记 List特点: ...
- Java学习笔记----容器
一.Java Collections框架是什么? Java Collections 框架中包括了大量集合接口以及这些接口的实现类和操作它们的算法(如:排序.查找.反转.替换.复制.取最小元素.取最大元 ...
- Java学习笔记——浅谈数据结构与Java集合框架(第二篇、Queue、Set)
江南好,何处异京华. 香散翠帘多在水,绿残红叶胜于花.无事避风沙. --<纳兰词> 诗词再好,大图不能忘 上大图: 先说说栈和队列: 栈就好比手枪的弹匣,你往里面压入子弹,最先压入的子弹就 ...
- Java学习笔记——浅谈数据结构与Java集合框架(第三篇、Map)
桃李春风一杯酒,江湖夜雨十年灯 --寄黄几复 之前图上写错了,是Hashtable类.t是小写的,它是个很古老的类,以至于命名都没有那么规范.. HashMap HashMap就是存储key-valu ...
- Java学习 · 初识 异常机制
异常机制 1. 程序中的异常 a) b) 面对异常如何解决 i. 由开发者通过if-else来解决 代码臃肿 程序员需要花费很大精力 ii. ...
- Java学习 · 初识 面向对象深入一
面向对象深入 1.面向对象三大特征 a) 继承 inheritance 子类可以从父类继承属性和方法 子类可以提供自己的属性方法 b) 封装 encapsulation 对外隐藏某些属性和方法 对外公 ...
- Java学习 · 初识 面向对象基础一
面向对象基础 1.1面向过程与面向对象的区别 面向过程和面向对象二者都是思考问题的方式,再简单的事物时,可以线性思考时使用面向过程,但当事物较为复杂时,只能使用面向对象设计.但二者并不是对立的,在解决 ...
- Java学习 · 初识 多线程
多线程 1. 基础概念 a) 程序 Program i. 静态代码,指令集,应用程序执行的蓝本 b) 进程 Process i. 动态概念,正在运 ...
- Java学习 · 初识 IO流
IO流 1. 原理与概念 a) 流 i. 流动,流向 ii. 从一端移动到另一端 源头到目的地 iii. 抽象.动态概念,是一连 ...
随机推荐
- Web打印连续的表格,自动根据行高分页
拿到这个需求,我已经蛋碎了一地,经过N天的攻克,终于是把它搞定了,只是不知道会不会在某种情况下出现BUG.表示我心虚没有敢做太多的测试.... ---------------------------- ...
- .net core运行环境搭建 linux + windows
---------------------------------------linux------------------------------------------------- 一.添加do ...
- 学习笔记(3)centos7 下安装RabbitMQ
centos7 安装RabbitMQ 安装erlang 因为RabbitMQ由ERLANG实现,所以需要先安装erlang.可以从https://www.erlang-solutions.com/re ...
- 奇(qi)谋(ji)巧(yin)计(qiao)
一.打表法 0.http://oeis.org/ 1.差分序列:https://blog.csdn.net/wu_tongtong/article/details/79115921 对于一个多项式产生 ...
- ES6 开发规范-最佳实践
ES6 开发规范(最佳实践) 本文为开发规范,收集方便日后查看. [开发规范]https://blog.csdn.net/zzzkk2009/article/details/53171058?utm_ ...
- 微信小程序 —— 仿制豆瓣(一)
先预览一下效果 欢迎扫码查看 码云地址:https://gitee.com/mk_23/little_chen_xu.git 预览完成,首先进入app.json文件中配置参数,主要就是配置我们要用的页 ...
- layui sleect获取value值
<div class="layui-form-item"> <label for="username" class="layui-f ...
- python逻辑判断 () not and or
python逻辑判断 () not and or 优先级关系:()>not>and>or 运算符示意 not –表示取反运算. and –表示取与运算. or –表示取或运算. or ...
- 小程序开发-9-Behavior行为与加入缓存系统优化流行页面
Behavior行为与加入缓存系统优化流行页面 navi组件与移动端触碰区域探讨 触碰区域优化 设计师切图切大点,多余部分变成透明色 前端将可触碰区域变大 解决向左箭头变灰,向右变灰 禁用事件的技巧 ...
- vim 粘贴文本,格式混乱 tab
粘贴的代码如上.修改方法: 方法一: set paste 贴完后,设置 set nopaste 恢复代码缩进. 方法二:修改配置文件 vim /etc/vim/vimrc set pastetoggl ...