數組:
數組是什麼? 數組是存儲一系列同一類型資料的容器。
在Java中,數組可以分為一維數組,多元數組;根據存儲内容又可以分為基本類型數組與引用類型數組;
看上面兩張圖,得到如下結論:
1、Java中的二維數組乃至多元數組本質上還是一維數組;
2、Java中基本類型直接存儲在堆記憶體中,但是引用類型存儲的是記憶體位址;
關聯數組:
關聯數組與普通數組不同的是,key值可以是整數也可以是字元串,一般可以稱為hash表;
var arr=new Array();
arr["china"]="beijing,niaoling,hulan";
arr["usa"]="newyork,washington,atlanta";
arr["japan"]="tokyo";
alert(arr["china"]);
alert(arr["japan"]);
alert(arr[0]);
連結清單:
連結清單是資料帶有指針的一組資料結構,可以分為單項連結清單,雙向連結清單,循環連結清單(如下圖)
這裡有道反向連結清單的題:
反轉前:
反轉後:
可以參考如下代碼(采用了遞歸):
private ListNode reverse(ListNode head){
// 遞歸到底的退出條件
if (head.next == null) {
return head;
}
// 不能用newHead的next指向目前節點,因為newHead始終沒有動
ListNode newHead = reverse(head.next);
head.next.next = head;//連結清單循環
head.next = null;
return newHead;
}
集合:
集合在底層的實作可能是數組,也可能是連結清單,也可能是其他資料結構,其與普通數組不同的是集合的長度可以變化;
隊列:
隊列是一種先進先出(First in First Out)的線性表,簡稱FIFO。
其隊列可以分為順序隊列(底層可以使用數組實作),鍊隊列(底層可以采用連結清單實作,長度不受限制)
棧:
先進後出;
跳表:
索引與反向索引:
索引:
反向索引:
BitSet:
bitset是一個布爾數組,每一位隻存儲一個值,0或者1;