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. 抽象.动态概念,是一连 ...
随机推荐
- ARM v7-A 系列CPU的MMU隐射分析
ARM v7-A 系列CPU的MMU隐射分析 摘要:ARM v7-A系列的CPU加入了很多扩展,如多核处理器扩展.大物理地址扩展.TrustZone扩展.虚拟化扩展.若支持大的物理地址,则必须支持多核 ...
- TortoiseSVN 分支创建与合并
前提准备: 确保本地Work Copy 和 服务器上的 版本一致.( 所有代码都提交到SVN,并update一次) 1 从主干创建分支代码 在本地Work Copy 选中项目文件夹,鼠标右键选择 ...
- WPF引用ActiveX提示没有注册类或不是有效的Win32程序
VS2017开发WPF时,需要引用UKey组件读取插入的Ukey编号和密钥 该组件在网页端调用时使用ObjectId进行ActiveX注册即可,后来做成WPF客户端进行读取遇到该问题. 解决: 右键项 ...
- css清除间隙
.clear{clear:both;height:0;width:0;line-height:0;overflow:hidden;}
- plsql中特殊字符的处理
--去除换行chr(10) update zhzl_address t set t.add_administration_num=replace(t.add_administration_num,ch ...
- DB数据源之SpringBoot+MyBatis踏坑过程(四)没有使用连接池的后果
DB数据源之SpringBoot+MyBatis踏坑过程(四)没有使用连接池的后果 liuyuhang原创,未经允许禁止转载 系列目录连接 DB数据源之SpringBoot+Mybatis踏坑过程实 ...
- 装饰器概念&实际使用干货
定义: 本质是函数(装饰其他函数),是为其他函数添加附加功能 原则: 不能修改被装饰函数的源代码 不能修改被装饰函数的调用方式 实现装饰器知识储备: 函数及“变量” 高阶函数 把一个函数名当做实参 ...
- 关于Date的冷门知识记录
最近在做项目的时候,用到了Date.toLocaleString来处理当前日期.在这之前,我都是通过get*等方式来获取数据进行拼接.无意间,发现了toLocaleString方法.遂想写一篇文章来记 ...
- Quote Helper
using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft.Xrm.Sdk.Que ...
- 详解PreparedStatement
详解PreparedStatement /** * PrepareStatement 测试插入数据库 */ /** * 如果使用Statement,那么就必须在SQL语句中,实际地去嵌入值,比如之前的 ...