List集合、常用数据结构基本了解
List接口
List接口特點(diǎn):
數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)存儲(chǔ)的常用結(jié)構(gòu)有:棧、隊(duì)列、數(shù)組、鏈表和紅黑樹。
棧:stack,又稱堆棧,它是運(yùn)算受限的線性表,其限制是僅允許在標(biāo)的一端進(jìn)行插入和刪除操作,不允許在其他任何位置進(jìn)行添加、查找、刪除等操作.
特點(diǎn):先進(jìn)后出,棧的入口、出口的都是棧的頂端位置
● 先進(jìn)后出。
● 棧的入口、出口的都是棧的頂端位置。
隊(duì)列:queue,簡稱隊(duì),它同堆棧一樣,也是一種運(yùn)算受限的線性表,其限制是僅允許在表的一端進(jìn)行插入,而在表的另一端進(jìn)行刪除。
特點(diǎn):先進(jìn)先出,隊(duì)列的入口、出口各占一側(cè)
● 先進(jìn)先出(存進(jìn)去的元素,要在后它前面的元素依次取出后,才能取出該元素)。
● 隊(duì)列的入口、出口各占一側(cè)。例如,下圖中的左側(cè)為入口,右側(cè)為出口。
數(shù)組:Array,是有序的元素序列,數(shù)組是在內(nèi)存中開辟一段連續(xù)的空間,并在此空間存放元素。
特點(diǎn):查詢快,增刪慢
● 查找元素快:通過索引,可以快速訪問指定位置的元素
● 增刪元素慢
○ 指定索引位置增加元素:需要?jiǎng)?chuàng)建一個(gè)新數(shù)組,將指定新元素存儲(chǔ)在指定索引位置,再把原數(shù)組元素根據(jù)索引,復(fù)制到新數(shù)組對(duì)應(yīng)索引的位置。
○ 指定索引位置刪除元素:需要?jiǎng)?chuàng)建一個(gè)新數(shù)組,把原數(shù)組元素根據(jù)索引,復(fù)制到新數(shù)組對(duì)應(yīng)索引的位置,原數(shù)組中指定索引位置元素不復(fù)制到新數(shù)組中。
鏈表:LinkedList是一個(gè)雙向鏈表,由一系列結(jié)點(diǎn)node(鏈表中每一個(gè)元素稱為結(jié)點(diǎn))組成,結(jié)點(diǎn)可以在運(yùn)行時(shí)動(dòng)態(tài)生成。每個(gè)結(jié)點(diǎn)包括兩個(gè)部分:一個(gè)是存儲(chǔ)數(shù)據(jù)元素的數(shù)據(jù)域,另一個(gè)是存儲(chǔ)下一個(gè)結(jié)點(diǎn)地址的指針域。我們常說的鏈表結(jié)構(gòu)有單向鏈表與雙向鏈表,那么這里給大家介紹的是單向鏈表。
特點(diǎn):查詢慢、增刪快,多個(gè)結(jié)點(diǎn)之間,通過地址進(jìn)行連接
● 多個(gè)結(jié)點(diǎn)之間,通過地址進(jìn)行連接。
● 查找元素慢:想查找某個(gè)元素,需要通過連接的節(jié)點(diǎn),依次向后查找指定元素
● 增刪元素快:
○ 增加元素:只需要修改連接下個(gè)元素的地址即可。
○ 刪除元素:只需要修改連接下個(gè)元素的地址即可。
紅黑樹:二叉樹binary tree ,是每個(gè)結(jié)點(diǎn)不超過2的有序樹(tree)
特點(diǎn):紅黑樹的出現(xiàn),就是用來提高搜索效率的.
java.util.LinkedList集合數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)是鏈表結(jié)構(gòu)。方便元素添加、刪除的集合。
LinkedList是一個(gè)雙向鏈表
HashSet集合介紹
java.util.HashSet是Set接口的一個(gè)實(shí)現(xiàn)類,它所存儲(chǔ)的元素是不可重復(fù)的,并且元素都是無序的(即存取順序不一致)。java.util.HashSet底層的實(shí)現(xiàn)其實(shí)是一個(gè)java.util.HashMap支持。
HashSet是根據(jù)對(duì)象的哈希值來確定元素在集合中的存儲(chǔ)位置,因此具有良好的存取和查找性能。保證元素唯一性的方式依賴于:hashCode與equals方法。
HashSet集合存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)(哈希表)
哈希表是由數(shù)組+鏈表+紅黑樹(JDK1.8增加了紅黑樹部分)實(shí)現(xiàn)的。
可變參數(shù)
修飾符 返回值類型 方法名(參數(shù)類型… 形參名){ }
Collections
● java.utils.Collections是集合工具類,用來對(duì)集合進(jìn)行操作。部分方法如下:
● public static boolean addAll(Collection c, T… elements):往集合中添加一些元素。
● public static void shuffle(List<?> list) 打亂順序:打亂集合順序。
● public static void sort(List list):將集合中元素按照默認(rèn)規(guī)則排序。
● public static void sort(List list,Comparator<? super T> ):將集合中元素按照指定規(guī)則排序。
Comparator比較器
public static void sort(List list):將集合中元素按照默認(rèn)規(guī)則排序。
public static void sort(List list,Comparator<? super T> )
public int compare(String o1, String o2):比較其兩個(gè)參數(shù)的順序。
兩個(gè)對(duì)象比較的結(jié)果有三種:大于,等于,小于。
如果要按照升序排序,
則o1 小于o2,返回(負(fù)數(shù)),相等返回0,01大于02返回(正數(shù))
如果要按照降序排序
則o1 小于o2,返回(正數(shù)),相等返回0,01大于02返回(負(fù)數(shù))
總結(jié)
以上是生活随笔為你收集整理的List集合、常用数据结构基本了解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: start与run的区别
- 下一篇: thymeleaf基本语法