(Java刷題常用的數據結構總結) 1. 基礎運算 //int型相關操作 Integer.INT_MAX;//int型最大值 Integer.INT_MIN;//int型最小值 long name;//註意:沒有c語言裡面的long long (int)n1%(int)n2;//取餘運算,針對int ...
目錄
1. 基礎運算
//int型相關操作
Integer.INT_MAX;//int型最大值
Integer.INT_MIN;//int型最小值
long name;//註意:沒有c語言裡面的long long
(int)n1%(int)n2;//取餘運算,針對int型,如果運算數不是int型要註意類型轉換
2. 字元串類
//String
String s_name = "";//定義一個空字元串
String s=String.valueOf(int);//int型轉字元串s
String.length();//獲得字元串長度
String.charAt(index);//獲得字元串中下標index的字元
string.toCharArray(str);//將字元串轉化為字元型數組
String.substring(start_index,end_index);//獲取字元串的子串,範圍是[start_index,end_index);
String1 + String2;//兩個字元串進行拼接
string1.concat(string2);//兩個字元串進行拼接
/*註意:String 類是不可改變的,所以你一旦創建了 String 對象,那它的值就無法改變了
因此String的“+”拼接效率低下,因為需要創建StringBuilder或者StringBuffer對象來實現
*/
//字元串遍歷方法一
for(char c:string.toCharArray()){}
//字元串遍歷方法二
for(int i=0;i<string.length();i++){
string.charAt(i);
……
}
//StringBuffer
StringBuffer Name=new StringBuffer();//聲明一個StringBuffer類型的變數
StringBuffer.append(ch);//在尾部添加字元
StringBuffer.toString();//將StringBuffer轉為String類型
//StringBuilder相關操作
StringBuilder Name=new StringBuilder();//定義一個空字元串
StringBuilder.append(char/String);//將字元或者字元串添加到字元串中
StringBuilder.toString();//將StringBuilder類型轉化為String類型
StringBuilder.reverse();//將字元串進行反轉,返回反轉之後的結果
3. 數組類與鏈表
//一維數組
int[] array_Name = new int[length];//數組定義方式一
int[] array_name=new int[]{初始的元素值};//數組定義方式二
int N=array.length;//獲得數組長度
array[index];//獲得數組的某個元素值
//二維數組
int[][] name=new int[line_size][row_size];//定義
int line=array.length;//獲得二維數組行數
int row=array[0].length;//獲得二維數組列數
//鏈表(結構體)
Class Node {//定義
int val;
Node next;
public Node(int val){
this.val=val;
this.next=null;
}
}
Node node=new Node(value);//新建鏈表節點
ListNode.val;//取鏈表結點的值
ListNode.next;//取鏈表節點的指針
//LinkedList
LinkedList<E> LLName=new LinkedList<E>();//定義一個鏈表,可根據頭尾操作模擬隊列或者棧
LinkedList<E> listname=new LinkedList<E>(oldlist);//將oldlist的元素複製一份給listname,且是深拷貝
LinkedList.remove();//從列表中刪除元素,預設刪除第一個元素,類似函數還有removeLast()\removeFirst()
LinkedList.remove(index);//刪除指定下標的元素
LinkedList.add(element);//從列表的末尾添加元素,類似函數還有addLast(element)\addFirst(element)
LinkedList.isEmpty();//判斷鏈表是不是空,是空返回true,不是空返回false
LinkedList.size();//獲得鏈表長度
//ArrayList
ArrayList<E> AL_Name = new ArrayList<E>();//定義一個數組
ArrayList.add(element);//在數組尾部添加元素
ArrayList.remove(index);//刪除指定下標的元素
ArrayList.get(index);//獲得指定下標的元素值
ArrayList.size();//獲得數組大小
ArrayList.indexOf(element);//查找元素的下標位置
4. 棧和隊列
//棧Stack
Stack<E> stackName=new Stack<E>();//定義一個棧
Stack.push(element);//元素壓入棧中
Stack.pop();//頂部元素彈出棧
Stack.empty();//判斷棧是不是空,如果是空返回true,不是空返回false
//隊列Queue
LinkedList<> queue_name=new LinkedList<>();//隊列結構用LinkedList實現
queue_name.add();//添加元素
queue_name.poll();//彈出元素
queue_name.size();//獲得隊列大小
5. 字典類
//HashMap相關操作
HashMap<type,type> HM_Name = new HashMap<type,type>();//定義
HashMap<type,type> HM_Name = new HashMap<type,type>(){{put(key,value);put(key,value);}};//定義並初始化
HashMap.put(key,value);//添加鍵值對
HashMap.get(key);//查找key對應的value並返回
HashMap.containsKey(key);//在map表中是不是存在key,存在的話返回true,不存在返回false
6. 樹
//樹結點定義
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
//獲取屬性值的兩種方式
//1、TreeNode A
A.value;
//2、TreeNode* A
A->value;
//空指針
A==null;//註意是小寫null
//結構體
root.left;
root.right;
root.val;