各位小伙伴们大家好:

     开讲之前还是要提一下"口碑"的那些事!没办法,领导施加压力,天天催口碑的事,要完成部门任务,我也没办法!!Holly也想好好静下心研究技术和大家一起分享,但是“口碑任务“完不成,就没法静心搞技术!我每天上10节课,早8:30到晚8:30,下班了,在写微信公众号,整理知识点!有点小辛苦,有点累,但是还是要每天坚持做自己该做的事!教学要做,个人提升要做,团队任务也要完善,毕竟在一个团队了,每个人不能做的事情都是自己喜欢做的,但是这也是我的工作内容的一部分,也需要完成!所以各位小伙伴们,如果你身边有想学java的,UI设计,WEB前端,大数据,.net,记得联系holly老师!Holly老师的QQ/微信:964918306 

 

    此致   敬礼

    可爱的Holly老师

    2017.12.28

 

 

Java高级(一) 集合_java

 

纸飞机

Java高级(一) 集合_微信公众号_02

PAPER

AIRPLANES

 

 

  1. 为什么使用集合框架

(1)  数组长度固定不变,不能很好适应元素数量动态变化的情况。

(2) 可通过数组名.length获取数组的长度,却无法直接获取数组中真实存在的对象个数

(3). 数组采用的是内存中分配连续空间的存储方式,根据下标查找对象信息时效率低。

(4). 在存储狗狗信息时,希望分别存储狗狗昵称与狗狗信息,两者具有一一对应的关系,狗狗昵称作为狗狗信息的关键存在,可以根据昵称获得狗狗的信息吗?显然数组是解决不了的.

 

Java高级(一) 集合_java

 

Java高级(一) 集合_微信公众号_04 

 

 

2.集合框架包含的内容

(1) 概念:集合框架是为表示和操作集合而规定的一种统一的标准体系结构。

(2)作用:java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中

(3)集合框架的组成包含三大块内容: 对外的接口、接口的实现类和对集合运算的算法

①接口:Collection、List、Set、Map、Iterator

②实现类:ArrayList、LinkedList、HashMap、HashSet

③算法:查找、排序等

(4) 接口分类(重点)

Collection:存储重复、无序对象

List:存储重复、有序对象

Set:存储唯一、无序对象

Map:存储键值对象,(key,唯一,无序)(value,重复,无序)

 

Java高级(一) 集合_java

 

`  '

Java高级(一) 集合_数组_06

JIANZHI

 

 

3.List接口的实现类ArryList

(1)特点:实现了长度可变的数组,在内存中分配连续的空间。

(2)优点:遍历元素和随机访问元素的效率比较高

(3)常用方法如下:

① boolean add(Object o)

开始在列表的末尾顺序添加元素, 起始索引位置从0开始

② void add(int index,Object o)

子标题在指定的索引位置添加元素。 索引位置必须介于0和列表中元素个数之间

③ int size()

返回列表中的元素个素

④ Object get(int index)

返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换

⑤ boolean contains(Object o)

判断列表中是否存在指定元素

⑥ boolean remove(Object o)

从列表中删除元素

⑦ Object remove(int index)

从列表中删除指定位置元素,起始索引从0开始

⑧void clear(); 

清空元素

⑨boolean isEmpty():

集合元素是否为空

 

 

Java高级(一) 集合_java

 

老鹰

Hawks

Catch

Chicken

Java高级(一) 集合_微信公众号_08

 

 

4.List接口的实现类LinkedList

(1)特点:采用链式存储方式

(2)优点:插入、删除,修改元素时效率比较高

类似铁链,每个环都扣在一起,要想插入一环,只需要拆开上环和下环就可以插入一环。删除:哪一环不想要,拆开上环和下环把中间环拿掉就可以了

(3) 缺点:找的时候麻烦

对于单链来讲,我只知道next下一个,只记下一个地址,但是下下一个地址我是不知道的,比如打电话

单链:上一环记下一环地址,从一个方向找头→尾,或从尾→头,用next()方法找

双链:每一个元素都要记上一个地址和下一个地址

(4)LinkedList常用方法:

① void addFirst(Object o)

在列表的首部添加元素

② void addLast(Object o)

在列表的末尾添加元素

③ Object getFirst()

返回列表中的第一个元素

④ Object getLast()

返回列表中的最后一个元素

⑤ Object removeFirst()

删除并返回列表中的第一个元素

⑥ Object removeLast()

删除并返回列表中的最后一个元素

 

 

Java高级(一) 集合_java

 

Java高级(一) 集合_微信公众号_10

Java高级(一) 集合_微信公众号_10Java高级(一) 集合_微信公众号_10

DA 

ZHU QIANG

 

 

5.HashSet

没顺序,没下标,没有get方法,

HashSet按照HashCode排序 ,HashCode表示机器码

 

 

Java高级(一) 集合_java

 

 

西

Java高级(一) 集合_java_14

南北

DONG XI

NAN BEI

 

 

6.HashMap。

键值对

数值有极限±21亿多,超过就越界 ,

int类型是4个字节的32为数字

键值对可以解决数组越界的问题

key是链表的环,

链表按HashCode值顺序链接即 key=code

 

 

Java高级(一) 集合_java

 

DOU JI 

 

Java高级(一) 集合_微信公众号_16

 

 

7.Map接口的实现类

(1)特点:采用哈希表的存储方式

(2)优点:查询指定元素效率高

(3)常用方法:

①Object put(Object key,Object value)

以“键-值对”的方式进行存储

注意:键必须是唯一的,值可以重复。如果试图添加重复的键,那么最后加入的"键值对"将替换掉原先的"键值对"

② Object get(Object key)

根据键返回相关联的值,若不存在指定的键,则返回null

③Object remove(Object key)

删除指定的键映射的"键值对"

④int size( )

返回元素个数

⑤Set keySet( )

返回键的集合

⑥Collection values( )

返回值的集合

⑦boolean containsKey(Object key)

若存在指定的键对应的”键值对“,则返回true

⑧boolean isEmpty()

若不存在键值映射关系,则返回ture

⑨void clear( )

从此映射中移出所有映射关系


8.Hashtable 和HashMap的异同

(1)相同:

都采用哈希表存储方式,实现原理相同,功能相同

(2)区别:

①Hashtable继承自Dictionary类,而HashMap实现了Map接口

②Hashtable是线程安全的;HashMap是线程非安全的,它重速度、轻安全

③Hashtable不允许null值(key和value都不允许),HashMap允许null值(key和value都允许)

 

Java高级(一) 集合_java

 

Java高级(一) 集合_键值对_18

DAN

GONG

Java高级(一) 集合_微信公众号_19

' `

Java高级(一) 集合_集合框架_20

 

 

9.迭代器Iterator

(1) 作用:专门实现集合的遍历。

Collection接口的iterate()方法返回一个Iterator,通过Iterator接口的两个方法即可方便的实现遍历

(2) 方法:

①boolean hasNext( ):

判断是否存在另一个可访问的元素

②Object next( ):

返回要返回的下一个元素

 

10. 泛型

使用泛型集合在创建集合对象时指定集合中元素的类型,在从集合中取出元素时无序进行强制类型转换,避免了ClassCastException异常。

 

 

 

有问题或更好建议可以联系holly老师:

 

每周会不定期的进行: 斗鱼直播讲堂(房间号672217)

直播时间会在前一天的微信公众号通知!

希望大家天天关注微信公众号哦!

博客园: 红酒人生(有大量技术帖子)

想高薪就业 就学习java,安卓,大数据,数据库,web开发,前端开发 ,可以来" 北大青鸟南京中博软件学院" 找 Holly老师 哦!!!Holly老师欢迎您来咨询!

长按下方二维码关注Holly老师公众号,一起学java吧!

 

 

追忆

童年

 

祝愿Holly班级的小伙伴元旦节快乐

 

心情|阅读|鸡汤|电影|牢骚

 

请留下你指尖的温度

让太阳拥抱你

记得这是一个有温度的公众号

 Java高级(一) 集合_数组_21Java高级(一) 集合_java_22