資料結構的一些語法整理

閱讀時間約 3 分鐘

主要在使用這兩種類型時常常會忘記,所以簡單整理一下內容

Stack

Stack<Character> stack = new stack<>();

屬於LIFO的特性,也就是先進後出的概念,因此所有動作通常是發生在top,可以想像成放球的瓶子,只有頂端一個開口可以拿最上面的那顆球。

可以使用的函數分別為 push(放球進去)、pop(移除最頂端的球)、peek(取最上面的球)、empty(檢查是否為空)、 search(搜尋特定的球,回傳距離頂端多遠)。

Queue

Queue<String> queue = new LinkedList<String>();

與Stack不同的點在屬於先進先出(FIFO),可以想像成單一方向的排隊,只能從後端進入,前端出去。像是LinkedList類即是實現Queue的一種方式。

常用方法有offer(添加元素)、poll(返回第一個元素,並從隊列中刪除)、element(返回第一個元素)、peek(返回第一個元素)。

程式碼宣告:

StringBuffer與StringBuulder類別

StringBuffer aBuffer = new StringBuffer(“aacc”);

使用時機:需要對String類進行不斷修改的話。

StringBuilder相較於StringBuffer來說速度較快,但若是有Thread安全問題,建議使用StringBuffer類。

程式碼:

aBuffer.append(“Buffer2”); //增加字符進buffer

reverse()// 將字符串反轉

delete(int start, int end) //移除序列中的字符

insert(int offset, int i) //在第offerset的位置替換為i的字符

replace(int start, int end, String str) //將字符串的內容替換

HashSet

HashSet<String> sites = new HashSet<String>();

HashSet是實作Set介面的物件,而在Set裡面的物件都是唯一的。

而他是由HashMap實現,因此並沒有排列順序。

add(“abc”) //加入元素

Iterator it = hashset.iterator(); //iterator用來處理任何的collection類別

while(it.hasNext()) { …} //將hashSet進行loop

ArrayList

//可以不用宣告大小,也可不宣告型態

ArrayList<> AL = new ArrayList(); //不宣告型態

ArrayList<String> AL = new ArrayList<String>();

//String型態(另外還Integer型態)

利用add()加入元素,get取得元素,remove刪除元素,set(1,”b”)取代元素,index(“ccc”)查找元素回傳index,clear清除元素。

相較之下,List單純為ArrayList的一個街口,但只能使用List的方法,實例話要採用ArrayList。

List<String> list = new ArrayList<>();

    avatar-img
    1會員
    37內容數
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    dab戴伯的沙龍 的其他內容
    物件導向的概念不外乎-> 封裝、繼承、多型、抽象、介面 封裝:在初始化一個class時,將內容物用private的方式包起來,而另外提供接口去給外界使用,可達到保護其資料隱私。 private: 只有自己類別的成員能夠存取 public: 任何人都可以調用 protected: 其父類與子類
    概要 在一個Android程序開始時,只會啟動一個Process(進程),關於此程序中的Activity與Service都會跑在這個Process之內。 而一個Process之中也會有很多個Thread,當一個Process被創造時,也會同時創造出一個Thread(Main Thread),所有
    Activity生命週期 onCreate: 第一次開啟時會進入的流程,只會執行一次 onStart: 將Activity的頁面可視化,並將UI物件初始化使其可和使用者互動 onResume:使用者進行互動時在這個階段,直到使用者切換頁面之後,切換成onPause。 onPause : 有其
    Android 主要從上層(接近使用者)到最底層(接近硬體)順序為: Application -> Framework -> Hal -> Linux Kernel。 Application層:應用程序是在這進行發展,也是使用者直接接觸到的部分。 Framework層:這裡會透過AIDL與Se
    DHCP 獲取IP位址。 在建立完兩者的連接後,STA會優先發起DISCOVER的廣播,要求網域提供IP地址的分配,網內的DHCP服務器收到後,會選擇一個IP地址發送給客戶端(OFFER),收到OFFER的STA會再發送一個Request確認是否為該IP位址,若沒錯,DHCP會回傳ACK表示確認
    WIFI連接過程主要分成三步驟: 掃描 (Probe Request, Probe Response) 認證 (Authentication) 連接 (Association Request, Association Response) Eapol(WEP, WPA, WPA2) DHCP
    物件導向的概念不外乎-> 封裝、繼承、多型、抽象、介面 封裝:在初始化一個class時,將內容物用private的方式包起來,而另外提供接口去給外界使用,可達到保護其資料隱私。 private: 只有自己類別的成員能夠存取 public: 任何人都可以調用 protected: 其父類與子類
    概要 在一個Android程序開始時,只會啟動一個Process(進程),關於此程序中的Activity與Service都會跑在這個Process之內。 而一個Process之中也會有很多個Thread,當一個Process被創造時,也會同時創造出一個Thread(Main Thread),所有
    Activity生命週期 onCreate: 第一次開啟時會進入的流程,只會執行一次 onStart: 將Activity的頁面可視化,並將UI物件初始化使其可和使用者互動 onResume:使用者進行互動時在這個階段,直到使用者切換頁面之後,切換成onPause。 onPause : 有其
    Android 主要從上層(接近使用者)到最底層(接近硬體)順序為: Application -> Framework -> Hal -> Linux Kernel。 Application層:應用程序是在這進行發展,也是使用者直接接觸到的部分。 Framework層:這裡會透過AIDL與Se
    DHCP 獲取IP位址。 在建立完兩者的連接後,STA會優先發起DISCOVER的廣播,要求網域提供IP地址的分配,網內的DHCP服務器收到後,會選擇一個IP地址發送給客戶端(OFFER),收到OFFER的STA會再發送一個Request確認是否為該IP位址,若沒錯,DHCP會回傳ACK表示確認
    WIFI連接過程主要分成三步驟: 掃描 (Probe Request, Probe Response) 認證 (Authentication) 連接 (Association Request, Association Response) Eapol(WEP, WPA, WPA2) DHCP
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    這篇文章介紹了個人財務管理系統的資料庫設計,涵蓋使用者管理、銀行帳戶管理、財務紀錄和分類管理的核心功能。系統需求包括註冊登入、帳戶管理、財務記錄分類和報表生成。設計了四個資料表,並詳細說明其欄位設計和建表語法。透過清晰的表關聯,確保資料一致性和系統擴展性,為後續的 Laravel 開發打下基礎。
    Thumbnail
    上次我們提到了演算法(algorithm),它是一種解決問題的方式。但演算法只是資料結構與演算法(Data Structures and Algorithms, DSA)這個領域的一部分。今天,我們要進一步探索這個主題,了解它的核心概念。 什麼是資料結構與演算法呢?簡單來說,資料結構是用來組織和存
    Thumbnail
    從範例學python的目標讀者: 針對剛進入的初學者,想學習Python語言。 有基礎本數學邏輯基礎即可。 從小遊戲學python的目標讀者: 針對已經有經驗的C/C++, Python, 或其他有程式基礎的讀者。 想實作一些小專案,從實做中學習如何分析需求、元件分拆、到底層實作
    外文參考資料﹕ Ajdukiewicz, Kazimierz [Ajdukiewicz 1967]: Proposition as the Connotation of  Sentence, SL XX, 87-98. 這篇論文的原稿於1959年在美國講授,其後,艾杜凱維茨做了修改,但到1963年
    Thumbnail
    題目敘述 題目已經給定一個Trie前綴樹的類別和相關的函式介面interface, 要求我們把功能實作出來。 Trie() 建構子,初始化一個空的Trie。 void insert(String word) 插入一個新的單字word到Trie裡面。 boolean search(Strin
    Thumbnail
    題目敘述 題目會給我們一棵二元搜索樹的根結點root,還有一個指定的目標值val。 要求我們找出在樹中對應到目標值val的節點,假如找不到,請回傳null( null在Python就是None)。 題目的原文敘述 測試範例 Example 1: Input: root = [4,2,
    Thumbnail
    題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    這篇文章介紹了個人財務管理系統的資料庫設計,涵蓋使用者管理、銀行帳戶管理、財務紀錄和分類管理的核心功能。系統需求包括註冊登入、帳戶管理、財務記錄分類和報表生成。設計了四個資料表,並詳細說明其欄位設計和建表語法。透過清晰的表關聯,確保資料一致性和系統擴展性,為後續的 Laravel 開發打下基礎。
    Thumbnail
    上次我們提到了演算法(algorithm),它是一種解決問題的方式。但演算法只是資料結構與演算法(Data Structures and Algorithms, DSA)這個領域的一部分。今天,我們要進一步探索這個主題,了解它的核心概念。 什麼是資料結構與演算法呢?簡單來說,資料結構是用來組織和存
    Thumbnail
    從範例學python的目標讀者: 針對剛進入的初學者,想學習Python語言。 有基礎本數學邏輯基礎即可。 從小遊戲學python的目標讀者: 針對已經有經驗的C/C++, Python, 或其他有程式基礎的讀者。 想實作一些小專案,從實做中學習如何分析需求、元件分拆、到底層實作
    外文參考資料﹕ Ajdukiewicz, Kazimierz [Ajdukiewicz 1967]: Proposition as the Connotation of  Sentence, SL XX, 87-98. 這篇論文的原稿於1959年在美國講授,其後,艾杜凱維茨做了修改,但到1963年
    Thumbnail
    題目敘述 題目已經給定一個Trie前綴樹的類別和相關的函式介面interface, 要求我們把功能實作出來。 Trie() 建構子,初始化一個空的Trie。 void insert(String word) 插入一個新的單字word到Trie裡面。 boolean search(Strin
    Thumbnail
    題目敘述 題目會給我們一棵二元搜索樹的根結點root,還有一個指定的目標值val。 要求我們找出在樹中對應到目標值val的節點,假如找不到,請回傳null( null在Python就是None)。 題目的原文敘述 測試範例 Example 1: Input: root = [4,2,
    Thumbnail
    題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val