开发笔记之JAVA ArrayList 和 LinkedList
间歇性精神十足, 持续性要死不活的我又来更新啦.
此篇主要介绍ArrayList和LinkedList这两个货色的.
快上车! 终点站! 秋名山!
第一站 ArrayList
他和Array的关系类似于String和StringBuffer的关系, 他是个可变的数组.
Array对与我们来说不够听话, 没有提供给我们足够"玩弄"它的方式, 所以我们"玩弄"更听话的ArrayList.
- 首先要注意的是: 他是LIst接口的可变数组实现, 每个 ArrayList 实例都有一个容量, 这个容量是用来存储列表元素的数组的大小, 看一下它的构造器
ArrayList()
这个东西的含义要明确, 是构造一个初始容量为 10 的空列表, 但是不用担心, 他会随着你的添加去增加其容量的, 他是一个连续的! 这句话很重要, 他是跟LinkedList的最大区别.
- 而且第二点要注意的是: 这东西可不是加了什么线程安全的, 所以你要注意这个问题.
本着已实用为主的老规矩介绍一下常用的方法
- 将指定的元素添加到此列表的尾部
add(E e) // E的意思是泛型
return boolean;
- 将指定的元素插入此列表中的指定位置
add(int index, E element)
return void;
- 移除此列表中的所有元素
clear()
return void;
- 返回此列表中指定位置上的元素
get(int index)
return E;
- 移除此列表中指定位置上的元素
remove(int index)
return E;
- 用指定的元素替代此列表中指定位置上的元素
set(int index, E element)
return E;
增删改查都有了, 怎么样? 是不是相对于Array这个可变的好玩多了.
第二站 LinkedList
他是List 接口的链接列表实现, 他是链式的.
一定要记住这句话, 这句话是他与ArrayList不同的关键.
首先来看他的构造方法.
LinkedList()
他跟ArrayList有什么不同呢? 他构造的是一个空列表.
可能你看到这你会有些疑问, 不要着急, 先往下看, 你会有更多的疑问(斜眼笑).
还是本着实用的原则, 看一下常用的方法.
- 将指定元素添加到此列表的结尾
add(E e)
return boolean;
- 在此列表中指定的位置插入指定的元素
add(int index, E element)
- 移除此列表中的所有元素
clear()
return void;
- 返回此列表中指定位置上的元素
get(int index)
return E;
- 移除此列表中指定位置上的元素
remove(int index)
return E;
- 用指定的元素替代此列表中指定位置上的元素
set(int index, E element)
return E;
你看到这你所应该有的表情应该是👇
承让承让且慢动手, 你还记得那句重要的话么-----他是List 接口的链接列表实现, 他是链式的.
这就是为什么他俩的方法基本上都一样.
第三站, ArrayList 和 LinkedList的区别
顺便刚才想打人的旅客请下车, 不给你们看, 傲娇脸.
他俩的区别说白了就是一个连续和链式的区别.
- ArrayList的优点是对于检索查找有一定的优势, 因为他是连续的, 你给一个位置, 他会直接到那个位置去找相同的, 他对与改也同样有优势.
-
LinkedList的优点是他对删除和插入有优势.
为什么这么说呢?
这就是链式的问题了, 因为链式的特殊性, 举个例子你目前有, 1, 2, 3, 4, 5这五个东西, 你把2删掉了, 连续性的会把3, 4, 5整体的向前移位, 这明显的就增加了复杂度.
连续性质
而链式则不同, 你把2删除, 1就会获取到3的地址. 从字面意义上来讲, 你就可以明显的觉得链式占优势.
链式删除前
当然了, 链式的特性不是这么简简单单的两句话就能概括好的, 如果再往下介绍那就跑题了, 你只需要在脑中有一个印象, 后期我会专门开一篇文章来介绍的.
终点站
下车了! 各位. 如果你们没看够的话我还有几篇文章, 想多看看关于JAVA基础, 或者是我个人龟速更新的编程心得都有哦.
个人编程想法心得(不定期更新)
开发笔记之详述JAVA构造函数和代码块本身及其执行细节
开发笔记之冒泡排序, 选择排序, 折半查找
iOS开发笔记-基于AFNetworking 3.0的登录 注册