iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0
自我挑戰組

30 天程式學習筆記:我的自學成長之路系列 第 4

[DAY 4] Java 集合框架:深入淺出 Stack 與 Queue

  • 分享至 

  • xImage
  •  

前言

掌握 Java 核心的資料結構和集合框架非常重要。今天,我們將深入探討Collection 框架,特別聚焦於 Stack 和 Queue 這兩種經典的資料結構。無論是在日常開發中處理資料,還是在面試中應對算法題,理解並靈活運用這些資料結構都能讓我們事半功倍。本文將為您揭開 Collection、Stack 和 Queue 的神秘面紗。

導覽

  1. Collection 框架:
    • 介紹 Collection 介面及其層次結構
    • 詳解主要子介面:List、Set 和 Queue
    • 探討常用實現類如 ArrayList、LinkedList、HashSet 等
  2. Stack 深入解析:
    • Stack 類的基本概念和特性
    • 核心方法詳解:push、pop、peek 等
  3. Queue 全面剖析:
    • Queue 介面的特點和實現類(以 LinkedList 為例)
    • 重要操作:offer、poll、peek 等

通過本文,您將能夠:

  • 全面了解 Collection 框架的結構和特點
  • 熟練掌握 Stack 和 Queue 的使用方法
  • 在實際開發中靈活選擇和應用適當的資料結構

用法解析

Collection

  • Collection 介面Collection 是 Java 集合框架中的一個核心介面,它定義了一組操作集合物件的標準方法。然而,Collection 介面本身並不直接實例化,而是透過其子介面和實現類來操作不同類型的集合。CollectionListSetQueue 這些子介面的父介面。
  • 層次結構
    • List:一個有序的集合,允許重複的元素。典型實現包括 ArrayListLinkedList
    • Set:一個不允許重複元素的集合。典型實現包括 HashSetTreeSet
    • Queue:通常以 FIFO(先進先出)的順序來處理元素,但具體行為取決於具體實現類別。常見的實現包括 LinkedListPriorityQueue
  • 方法
    • add(E e) :添加元素
    • remove(Object o) :移除元素
    • size() :返回集合大小
    • isEmpty() :檢查集合是否為空
    • contains(Object o) :檢查是否包含某元素
    • clear() : 清空集合
    • iterator() :返回迭代器
  • 主要實現類
    • ArrayList:基於動態陣列的實現,允許隨機訪問元素。它在讀取操作上效率較高,但在中間插入或刪除元素時效率較低。
    • LinkedList:基於雙向鏈結的實現,對於頻繁的插入和刪除操作有較好的性能。
    • HashSet:基於哈希表的實現,不保證元素的順序,並且不允許重複的元素。
    • TreeSet:基於紅黑樹的有序集合,元素以自然順序或自定義的比較器順序儲存。不允許重複元素。
  • 其他相關類
    • Map 介面(如 HashMapTreeMap)儘管不屬於 Collection 介面的子介面,但它也是 Java 集合框架的重要組成部分,負責儲存鍵值對。

Stack

import java.util.Stack;
Stack<Integer> stk = new Stack<Integer>();

stk.push(0);// 將元素推入堆疊

stk.pop(); // 移除並返回堆疊頂部元素

stk.peek();// 返回堆疊頂部元素,但不移除

stk.empty();// 堆疊為空返回 true,否則返回 false

stk.contains(Object o);// 檢查堆疊是否包含指定元素

stk.get(int index);// 獲取指定索引處的元素

stk.set(int index, Object o);// 替換指定索引處的元素

stk.size(); // 返回堆疊中的元素數量

Queue

Java 中的 LinkedList 實作了 Queue 介面

import java.util.LinkedList;
import java.util.Queue;
Queue<String> queue = new LinkedList<String>();

queue.offer("a"); // 添加元素

queue.poll(); // 從隊列頭部取出並移除元素。如果隊列為空,則返回 null

queue.peek(); // 從隊列頭部取出但不移除元素。如果隊列為空,則返回 null

queue.isEmpty();// 如果隊列為空則返回 true,否則返回 false

queue.contains(Object o); // 檢查隊列是否包含指定元素

queue.size(); // 返回隊列中的元素數量


上一篇
[DAY 3] Java 基礎到進階:從資料處理到效能優化
下一篇
[DAY 5] 別讓 GitHub 毀了你的專案!新手必讀防踩坑指南
系列文
30 天程式學習筆記:我的自學成長之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言