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