今天和别人聊天时,有所感慨。 自己辛辛苦苦的学了不少东西。 但是谁又能相信我是真的学过,真的努力了呢。能拿出什么证据出来吗。
学过的东西要说的出来,证明自己是学过了的。不然你去面试的时候,跟面试官说你学了xxx技术,他会相信你说的话吗。
在提到LinkedList之前我们先来说说什么是集合,集合和数组之前的区别。
百度百科中说到,集合类是Java数据结构的实现。Java的集合类是java.util包中的重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。
那么集合和数组之前的区别又是什么?
1.集合的容量大小是可变的,数组的容量大小是不可变的。
2.集合存储的是引用数据类型,数组存储的是基础数据类型和引用数组类型。
3.集合的数据结构是顺序表,链表,哈希表,树等,而数组只有数据表结构
4.集合是以类的形式存在,具有封装,继承,多态等特性。而数组没有。
参考博客:https://blog.youkuaiyun.com/weixin_48512144/article/details/107289664
我们都知道java的集合有两种,一种是键值对类型,一种是非键值对类型。
也就是map类型 和list,set类型。
list和set是继承了Collection接口的,而map没有。
那么list和set有什么区别呢
list是有序的,set是无序的。list是可重复的,set是不重复的。
list又分为很多种,比如线程不安全的ArrayList,LinkedList,还有线程安全的,比如读写锁结构的CopyOnWriterArrayList和不常用的Vector等。
ArrayList属于动态数组结构,查询快,增删慢。
而LinkedList是双向链表结构,增删快,查询慢。
也就是说LinkedList不存在初始值一说。
双向链表是什么,和单向链表有什么区别?
双向链表是链表前后都可以添加元素,而单向链表只能往后添加元素
好像说跑题了,下面来正式说说LinkedList
我们在看一个类的源码时,首先都是要先看这个类在哪个包,继承了哪个类或者实现了哪个接口
LinkedList是支持泛型的,在java.util工具包下
继承了AbstractSequentialList类,实现了List,Aeque,Cloneable,Serializable接口
也就是说LinkedList是支持序列化的
我们再来看看LinkedList中的全局变量
有这三个

长度,首节点,最后一个节点。
transient关键字我们也都知道,是禁止序列化的一个关键字。
然后一些构造方法和不常用的方法在这里我就不说了,大家可以自己去看。
注意:有的方法我没有写参数值
getFirst() :获取首节点
原理: 如果头节点为null会抛出NoSuchElementException,否则返回头节点自身的值

getLast() :获取尾节点
原理:如果尾节点为null,抛出NoSuchElementException异常,否则返回尾节点自身的值

removeFirst() :删除头节点
原理:

removeLast() :删除尾节点

addFirst(): 添加首节点

addLast(): 添加尾节点

contains(): 是否包含某个对象

size(): 获取集合长度

add(): 添加元素

remove(): 删除元素

addAll():添加全部集合元素

clear(): 清空集合

get(int index): 根据下标获取集合元素

set(int index, E element): 修改带下标的集合元素

add(): 添加带下标的集合元素

remove(int index): 根据下标 删除元素

大家平时在学习一些技术时,不要只停留在会用,要知其然,还要知其所以然。
希望大家多多努力,加油,机会是留给有准备的人的。
博客先强调学习技术要能证明所学,接着介绍Java集合,对比集合与数组区别,阐述集合中map、list、set类型差异,重点讲解LinkedList,包括其双向链表结构、在包中的位置、继承实现的接口、全局变量,还列举了常用方法及原理,鼓励深入学习技术。
148

被折叠的 条评论
为什么被折叠?



