2020-03-06-Java

1.使用LinkedList

LinkedList在类中的层次关系
【图】


Snipaste_2020-03-06_13-45-34.png

为什么需要LinkedList?
ArrayList可以在任意位置添加元素:尾部追加、中间插入。

每个元素由3个部分组成:有向前指针,有向后指针,元素本身。
LinkedList排列元素:首尾相连,当前项,会链接到上一项,也会链接到下一项。
好处:插入和删除效率非常高。
api:
(1)public boolean add(Object o),向链表尾部追加一个元素
(2)public boolean add(int index,Object o),在指定的位置插入一个元素。(它的插入效率比ArrayList插入元素的效率更高)
(3)public boolean addFirst(Object o),在链表头部增加一个元素
(4)public boolean addlast(Object o),在链表尾部追加一个元素
(5)public boolean clear(),清楚所有元素
(6)public Object remove(int index),删除指定位置的元素
(7)public Object remove(Object o),直接删除元素
(8)public Object get(int index),获取指定位置的元素
【案例1】对图书信息进行管理,完成添加、删除、插入,遍历。
项目结构:


Snipaste_2020-03-06_15-24-43.png

Book.java


Snipaste_2020-03-06_15-38-59.png
Snipaste_2020-03-06_15-39-06.png

MyTest.java


Snipaste_2020-03-06_15-26-14.png

日志:


Snipaste_2020-03-06_15-41-50.png

2.Set接口

与List不一样。
无序不可重复。
实现类:

HashSet:

可以将每一个元素通过HashCode()方法计算出每个对象的hash值,从而保证它的唯一性,也就不重复。因此,后插入的数据可能hash值靠前,所以顺序上不是按照插入集合的顺序,看上去是无序的。
Set的API:
(1)boolean add(Object o),向集合中追加一个元素
(2)int size(),获取集合元素个数
(3)boolean contains(Object o),查找某某元素是否存在,根据hashcode来查找
(4)boolean remove(Object o),移除某某元素。
【案例】证明无序。


Snipaste_2020-03-06_14-15-12.png

【案例】证明不可重复。


Snipaste_2020-03-06_14-16-03.png

TreeSet

可以实现有序的set。
如何实现有序?

(1)自然排序,需要在集合元素定义时实现Comparable接口。

这个接口,告诉集合,如何比较大小?也就是如何排序。
【案例2】实现图书按价格排序显示
步骤:
1)创建Book类,含有3个字段,序号、图书名、价格
2)让Book类实现Comparable接口,实现compareTo(O)方法,表达出排序的逻辑。
3)修改实现Comparable接口,让他支持泛型参数。
【思考】修改价格排序为图书名字排序。
4)建立TreeSet集合,存入3本书,实现按价格排序。
【思考】价格升序和价格降序。
【思考】图书名称升序排列,和降序排序。

项目结构:


Snipaste_2020-03-06_15-28-29.png

Book.java


Snipaste_2020-03-06_15-28-56.png
Snipaste_2020-03-06_15-29-04.png

Snipaste_2020-03-06_15-29-30.png

MyTest.java


Snipaste_2020-03-06_15-30-12.png

日志:
Snipaste_2020-03-06_15-42-52.png

(2)自定义排序

关键点:在初始化TreeSet时,需要传入一个比较器。
比较器是一个比较规则。
【案例】
项目结构:


Snipaste_2020-03-06_15-35-21.png

Book.java


Snipaste_2020-03-06_15-35-58.png
Snipaste_2020-03-06_15-36-07.png

MyTest.java


Snipaste_2020-03-06_15-36-34.png
Snipaste_2020-03-06_15-36-45.png

日志:


Snipaste_2020-03-06_15-42-52.png

3.Map

双列集合,存储数据是按键值对存储。key和 value,
key必须唯一,因此不可重复。
存在于Collection下,Map本身也是一个接口,又分为HashMap和TreeMap
API:
(1)Object put(Object key,Object value),向集合中插入一个元素,不存在的key就插入这个元素,如果已存在,就覆盖这个元素。
(2)void putAll(Map map),一次存入一个Map
(3)Set entrySet(),转成Set数据结构
(4)Set keySet(),把map中所有的key映射成一个Set集合
(5)Collection values(),把map中所有的value映射成一个集合
(6)Object remove(Object key),按照指定的key移除元素
(7)Object get(Object key),按照key获取value
(8)boolean containsKey(Object key),判断有没有某某key存在
(9)boolean containsValue(Object value),判断有没有某某value存在
对于Map的操作,使用HashMap类来实现。
【案例3】使用Map存储图书
项目结构:


Snipaste_2020-03-06_15-37-39.png

Book.java


Snipaste_2020-03-06_15-25-19.png
Snipaste_2020-03-06_15-25-25.png

MyTest.java


Snipaste_2020-03-06_15-39-33.png
Snipaste_2020-03-06_15-39-42.png

日志:


Snipaste_2020-03-06_15-40-14.png

map在找数据时的优势:
如果知道key,如何找到value?
给你一个学号,到Arraylist中找某某学生,是不是要for遍历一遍,才能找出。
map知道可以,就可以找到学生,无序循环。
【作业】
作业1:对所有学生信息使用TreeSet进行存储。按照学生序号排序。选择菜单1表示升序,选择菜单2表示降序。
作业2:使用HashMap存储学生信息,完成增加1个学生,修改1个学生,删除一个学生,查询所有学生的功能。使用4个菜单完成。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容