容器和数据结构

  1. 1.   集合的引入

a)     集合的使用场景:需要将一些相同结构的个体整合到一起时

i.           新闻列表

ii.           邮件列表

iii.           购物车

b)    为什么使用集合不使用数组

i.           相似点

a)     储存多个对象,对外作为一个整体

ii.           数组缺点

a)     长度需要在初始化时就指定

b)    采用连续储存空间,删除和添加元素时效率低下

c)     无法直接保存映像关系

d)    没有封装,使用繁琐

c)     集合架构

i.           Java中提供了一套接口和类

ii.          

  1. 四大接口

a)     Collection接口

i.           不唯一,无序的对象

b)    List

i.           不唯一,有序的对象

ii.           两个实现

  1. ArrayList

a)     在内存中分配了连续的空间,实现数组可变长度

b)    优点:遍历元素和随机访问元素小老板较高

c)     缺点:添加和删除元素效率低,按照内容查询效率低

d)   

  1. LinkedList

a)     采用双向链表储存方式

b)    遍历和随机访问效率较低

c)     添加和删除元素效率较高,在低效率查询下

d)   

常用方法

i.           相比Collection增加了位置操作

ii.          

iii.          

c)     Set

i.           唯一,无序的对象

ii.           两种实现

  1. HashSet

a)     采用哈希表储存结构

b)    添加、插叙、删除速度快

c)     缺点:无序

  1. LinkedHashSet

a)     采用哈希表储存结构,链表维护次序

b)    有序(添加顺序

  1. TreeSet

a)     采用二叉树(红黑树)储存结构

b)    有序、查询速度比list快(按内容查询

c)     查询速度没有HashSet快

iii.           方法

d)    Map

i.           键值对象,从Key到Value的映射

ii.           Key 唯一 无序

iii.           Value 不唯一 无序

Java学习 · 初识 容器和数据结构的更多相关文章

  1. Java学习笔记——浅谈数据结构与Java集合框架(第一篇、List)

    横看成岭侧成峰,远近高低各不同.不识庐山真面目,只缘身在此山中. --苏轼 这一块儿学的是云里雾里,咱们先从简单的入手.逐渐的拨开迷雾见太阳.本次先做List集合的三个实现类的学习笔记 List特点: ...

  2. Java学习笔记----容器

    一.Java Collections框架是什么? Java Collections 框架中包括了大量集合接口以及这些接口的实现类和操作它们的算法(如:排序.查找.反转.替换.复制.取最小元素.取最大元 ...

  3. Java学习笔记——浅谈数据结构与Java集合框架(第二篇、Queue、Set)

    江南好,何处异京华. 香散翠帘多在水,绿残红叶胜于花.无事避风沙. --<纳兰词> 诗词再好,大图不能忘 上大图: 先说说栈和队列: 栈就好比手枪的弹匣,你往里面压入子弹,最先压入的子弹就 ...

  4. Java学习笔记——浅谈数据结构与Java集合框架(第三篇、Map)

    桃李春风一杯酒,江湖夜雨十年灯 --寄黄几复 之前图上写错了,是Hashtable类.t是小写的,它是个很古老的类,以至于命名都没有那么规范.. HashMap HashMap就是存储key-valu ...

  5. Java学习 · 初识 异常机制

    异常机制 1.   程序中的异常 a)     b)    面对异常如何解决 i.           由开发者通过if-else来解决 代码臃肿 程序员需要花费很大精力 ii.           ...

  6. Java学习 · 初识 面向对象深入一

    面向对象深入 1.面向对象三大特征 a) 继承 inheritance 子类可以从父类继承属性和方法 子类可以提供自己的属性方法 b) 封装 encapsulation 对外隐藏某些属性和方法 对外公 ...

  7. Java学习 · 初识 面向对象基础一

    面向对象基础 1.1面向过程与面向对象的区别 面向过程和面向对象二者都是思考问题的方式,再简单的事物时,可以线性思考时使用面向过程,但当事物较为复杂时,只能使用面向对象设计.但二者并不是对立的,在解决 ...

  8. Java学习 · 初识 多线程

    多线程 1. 基础概念 a)     程序 Program i.           静态代码,指令集,应用程序执行的蓝本 b)    进程 Process i.           动态概念,正在运 ...

  9. Java学习 · 初识 IO流

    IO流   1. 原理与概念 a)     流 i.           流动,流向 ii.           从一端移动到另一端 源头到目的地 iii.           抽象.动态概念,是一连 ...

随机推荐

  1. SecureCRT连接主机时(串口/网络),无法从键盘输入

    Session Option-Connection-Serial-Flow Control,里面的选项全部取消掉,再重启CRT就ok了...

  2. ubuntu 18.04可以连接内网,无法连接外网

    手动增加网关后,又重新sudo apt-get upgrade,  提示/etc/resolvconf/resolv.conf.d更新时,选Y后,不用手动修改网关也可以连接外网了. 一切默认更新后,1 ...

  3. ABAP术语-R/3 Repository Information System

    R/3 Repository Information System 原文:http://www.cnblogs.com/qiangsheng/archive/2008/03/11/1100076.ht ...

  4. Yii2中使用Soap WebSerivce

    Soap是一种轻量的.简单的.基于XML(标准通用标记语言下的一个子集)的协议 WebService顾名思义就是web服务,web服务主要有两种,一种是基于soap类型的服务,一种是基于rest类型的 ...

  5. Apache Flume简介及安装部署

    概述 Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的软件. Flume 的核心是把数据从数据源(source)收集过来,再将收集到的数据送到指定的目 ...

  6. 如何将github项目上传至gitlab

    一.修改远程分支关联 删除远程分支关联 将指向github的远程分支关联关系删除 git remote rm origin 添加新的远程分支关联 新的remote地址指向gitlab相应地址 git ...

  7. PWA-网络

    PWA-网络 fetch API Get fetch('/some/url',{ method:'GET' }).then(function(resp){ //success }).catch(fun ...

  8. GoLand软件免激活的使用方法

    由于官方的Goland软件,免费使用期限是30天.如果你不购买产品的话,就需要不断的卸载和重装软件才能使用.不过要是您的资金允许的话,可以去http://www.jetbrains.com/go/bu ...

  9. WinSCP与Putty远程连接linux

    1.  有时putty连接不上,可能是linux机器上的telnet服务未开,把蓝线上的√去掉. 2. ctrl + p 打开putty窗口: 3. putty如果显示乱码,右键 putty窗口,选择 ...

  10. MySQL高级第五章——主从复制

    一.复制的基本原理 slave会从master读取binlog(二进制日志文件)进行数据同步 步骤: 详细操作步骤请参见:http://www.cnblogs.com/luckcs/articles/ ...