1. 程式人生 > 其它 >LeetCode進階之路(二)java常用的資料結構

LeetCode進階之路(二)java常用的資料結構

LeetCode進階之路(二)java常用的資料結構

一、java常用的資料結構的特點和應用場景

1.陣列

  可以容納一串數字,每個數字有單獨的索引,可以方便的通過索引查詢相應位置的數值是多少。

2.字串String

  一串字母,不支援用[ ]直接訪問其中的字元,不能直接修改,需要用toCharArray轉化成char[]才可以修改。

  字串可以直接用+拼接,但效率低,for迴圈中儘量用StringBuilder進行字串的拼接。

  字串的比較用equal別用==,等號容易出現bug。

3.動態陣列ArrayList

  ArrayList是一個動態可修改的陣列,沒有固定大小限制,我們可以新增或刪除元素。對陣列的包裝,與C++中的Vector容器功能類似。

  

4.雙鏈表LinkedList

  連結串列不會按照線性順序儲存資料,它在每一個節點裡存下一個節點的地址。單鏈表包含兩個值,當前節點的值和下一個節點的連結。

  我們可以用雙鏈表對頭部和尾部的元素操作,直接操作頭部的效率更高,其中contains方法的時間複雜度是O(N)因為它需要遍歷整個連結串列。

  ArrayList和LinkList都是List的子類,二者返回的結果均滿足題目要求的List型別。

  頻繁的訪問列表中某一個元素,或只需要在列表末尾新增和元素時用ArrayList。

  通過迴圈迭代訪問列表中某些元素,或頻繁的在列表開頭、中間、末尾等位置新增刪除元素時用LinkedList。

5.雜湊表HashMap

HashMap是一個散列表,儲存的是鍵值對對映(key-value)

HashCode最多允許一條記錄的鍵值為null,HashMap無序,不會記錄插入的順序。

6.雜湊集合HashSet

不允許有重複元素的集合,允許有null值。

7.佇列Queue

  實現了先進先出的資料結構

8.堆疊Stack

  棧(Stack)實現了一個後進先出(LIFO)的資料結構。

二、java常用資料結構的詳細使用方法。

1.陣列

①初始化方法

int m=5,n=10;
//初始化一個大小為10的int陣列,其中預設值初始化為0
int[] nums=new int[n];

//初始化一個m*n的二維布林陣列,其中的元素預設初始化為false
bollean[][] visited=new boolean[m][m];

②做題時如果題目以函式引數的形式傳入,先做個非空檢查,然後用索引下標訪問其中的元素。

if(nums.length==0){
  return;    
}
for(int i=0;i<nums.length;i++){
  //訪問nums[i]
}

2.字串String

3.動態陣列ArrayList

  

4.雙鏈表LinkedList

5.雜湊表HashMap

6.雜湊集合HashSet

7.佇列Queue

8.堆疊Stack