欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java手動實現(xiàn)常見數(shù)據(jù)結構的示例代碼

 更新時間:2025年02月10日 14:17:20   作者:hxung  
本文介紹了Java中常用數(shù)據(jù)結構的特點和Java實現(xiàn),包括數(shù)組、動態(tài)數(shù)組、鏈表、棧、隊列、哈希表、樹、堆、圖、集合、雙向隊列以及自定義鏈表,幫助開發(fā)者選擇合適的數(shù)據(jù)結構以提升代碼效率,感興趣的朋友一起看看吧

在 Java 中,常用的數(shù)據(jù)結構可以通過 集合框架(Collections Framework) 實現(xiàn),也可以手動實現(xiàn)。以下是常見數(shù)據(jù)結構及其特點,以及對應的 Java 實現(xiàn)示例:

1. 數(shù)組(Array)

  • 特點:固定大小、內(nèi)存連續(xù)、隨機訪問高效。
  • 用途:存儲固定數(shù)量的元素。

Java 實現(xiàn)

int[] array = new int[5]; // 靜態(tài)數(shù)組
array[0] = 10;

2. 動態(tài)數(shù)組

(ArrayList)

  • 特點:基于數(shù)組實現(xiàn),支持動態(tài)擴容,隨機訪問高效(O(1)),插入/刪除低效(O(n))。
  • 用途:需要頻繁隨機訪問的場景。

Java 實現(xiàn)

import java.util.ArrayList;
ArrayList<Integer> list = new ArrayList<>();
list.add(10);        // 添加元素
int value = list.get(0); // 訪問元素

3. 鏈表(LinkedList)

  • 特點:基于雙向鏈表實現(xiàn),插入/刪除高效(O(1)),隨機訪問低效(O(n))。
  • 用途:頻繁插入/刪除的場景。
  • Java 實現(xiàn)
import java.util.LinkedList;
LinkedList<Integer> linkedList = new LinkedList<>();
linkedList.add(10);          // 添加元素
linkedList.addFirst(5);      // 頭部插入
int first = linkedList.getFirst(); // 訪問頭部元素

4. 棧(Stack)

  • 特點:后進先出(LIFO),支持 pushpop 操作。
  • 用途:函數(shù)調(diào)用棧、表達式求值。
  • Java 實現(xiàn)(推薦使用 Deque):
import java.util.ArrayDeque;
ArrayDeque<Integer> stack = new ArrayDeque<>();
stack.push(10); // 壓棧
int top = stack.pop(); // 彈棧

5. 隊列(Queue)

  • 特點:先進先出(FIFO),支持 offerpoll 操作。
  • 用途:任務調(diào)度、廣度優(yōu)先搜索(BFS)。
  • Java 實現(xiàn)
import java.util.Queue;
import java.util.LinkedList;
Queue<Integer> queue = new LinkedList<>();
queue.offer(10); // 入隊
int head = queue.poll(); // 出隊

6. 哈希表(HashMap)

  • 特點:基于哈希表實現(xiàn),鍵值對存儲,查找高效(平均 O(1)),無序。
  • 用途:快速查找、去重。
  • Java 實現(xiàn)
import java.util.HashMap;
HashMap<String, Integer> map = new HashMap<>();
map.put("Alice", 25); // 添加鍵值對
int age = map.get("Alice"); // 查找

7. 樹(TreeSet/TreeMap)

  • 特點:基于紅黑樹實現(xiàn),元素自動排序(按自然順序或自定義比較器),查找/插入/刪除時間復雜度為 O(log n)。
  • 用途:需要有序存儲的場景。
  • Java 實現(xiàn)
import java.util.TreeSet;
TreeSet<Integer> treeSet = new TreeSet<>();
treeSet.add(10);
treeSet.add(5); // 自動排序為 [5, 10]

8. 堆(PriorityQueue)

  • 特點:基于堆(默認最小堆)實現(xiàn),元素按優(yōu)先級排序。
  • 用途:任務調(diào)度、求 Top K 問題。
  • Java 實現(xiàn)
import java.util.PriorityQueue;
PriorityQueue<Integer> heap = new PriorityQueue<>();
heap.offer(10);
heap.offer(5); // 堆頂為 5
int min = heap.poll(); // 彈出最小值 5

9. 圖(Graph)

  • 特點:節(jié)點和邊的集合,通常通過鄰接表或鄰接矩陣實現(xiàn)。
  • 用途:社交網(wǎng)絡、路徑規(guī)劃。
  • Java 實現(xiàn)(鄰接表):
import java.util.*;
class Graph {
    private Map<Integer, List<Integer>> adjacencyList = new HashMap<>();
    public void addEdge(int src, int dest) {
        adjacencyList.computeIfAbsent(src, k -> new ArrayList<>()).add(dest);
        adjacencyList.computeIfAbsent(dest, k -> new ArrayList<>()).add(src); // 無向圖
    }
}

10. 集合(Set)

  • 特點:不允許重復元素。
  • Java 實現(xiàn)HashSetTreeSet):
import java.util.HashSet;
HashSet<String> set = new HashSet<>();
set.add("Apple");
set.add("Apple"); // 重復元素會被忽略

11. 雙向隊列(Deque)

  • 特點:支持兩端插入和刪除。
  • 用途:滑動窗口、雙端操作。
  • Java 實現(xiàn)
import java.util.ArrayDeque;
ArrayDeque<Integer> deque = new ArrayDeque<>();
deque.addFirst(10);
deque.addLast(20);
int first = deque.removeFirst();

12. 自定義鏈表(手動實現(xiàn))

class Node {
    int data;
    Node next;
    Node(int data) {
        this.data = data;
        this.next = null;
    }
}
class LinkedList {
    Node head;
    public void add(int data) {
        Node newNode = new Node(data);
        if (head == null) {
            head = newNode;
        } else {
            Node current = head;
            while (current.next != null) {
                current = current.next;
            }
            current.next = newNode;
        }
    }
}

總結

Java 提供了豐富的內(nèi)置數(shù)據(jù)結構(通過 java.util 包),開發(fā)者可以根據(jù)需求選擇合適的結構:

  • 快速查找HashMap、HashSet
  • 有序存儲TreeMapTreeSet
  • ???????高效插入/刪除LinkedList、ArrayDeque
  • ???????動態(tài)擴容ArrayList
  • ???????優(yōu)先級處理PriorityQueue

掌握這些數(shù)據(jù)結構的特點和使用場景,可以顯著提升代碼效率和可維護性!

到此這篇關于java手動實現(xiàn)常見數(shù)據(jù)結構的文章就介紹到這了,更多相關java常見數(shù)據(jù)結構內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot集成jersey打包jar找不到class的處理方法

    SpringBoot集成jersey打包jar找不到class的處理方法

    這篇文章主要介紹了SpringBoot集成jersey打包jar找不到class的處理方法,文中通過代碼示例介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • 深入理解Java序列化與反序列化

    深入理解Java序列化與反序列化

    今天教大家深入理解Java的序列化與反序列化,文中介紹的非常詳細,有很多代碼示例,對正在學習Java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Servlet實現(xiàn)簡單的用戶登錄功能實例代碼

    Servlet實現(xiàn)簡單的用戶登錄功能實例代碼

    這篇文章主要給大家介紹了關于利用Servlet實現(xiàn)簡單的用戶登錄功能的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Java定義棧結構,并實現(xiàn)入棧、出棧操作完整示例

    Java定義棧結構,并實現(xiàn)入棧、出棧操作完整示例

    這篇文章主要介紹了Java定義棧結構,并實現(xiàn)入棧、出棧操作,結合完整實例形式分析了java數(shù)據(jù)結構中棧的定義、以及入棧、出棧、棧是否為空判斷、棧大小計算、打印棧元素等相關操作技巧,需要的朋友可以參考下
    2020-02-02
  • Javaweb會話跟蹤技術Cookie和Session的具體使用

    Javaweb會話跟蹤技術Cookie和Session的具體使用

    本文主要介紹了Javaweb會話跟蹤技術Cookie&Session的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 解決@Cacheable在同一個類中方法調(diào)用不起作用的問題

    解決@Cacheable在同一個類中方法調(diào)用不起作用的問題

    這篇文章主要介紹了解決@Cacheable在同一個類中方法調(diào)用不起作用的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java設計模式中的門面模式詳解

    Java設計模式中的門面模式詳解

    門面模式又叫外觀模式(Facade Pattern),主要用于隱藏系統(tǒng)的復雜性,并向客戶端提供了一個客戶端可以訪問系統(tǒng)的接口,本文通過實例代碼給大家介紹下java門面模式的相關知識,感興趣的朋友一起看看吧
    2022-09-09
  • SpringAop攔截參數(shù)帶注解的方法

    SpringAop攔截參數(shù)帶注解的方法

    這篇文章主要介紹了SpringAop攔截參數(shù)帶注解的方法,本文給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2024-12-12
  • Mybatis?ResultMap和分頁操作示例詳解

    Mybatis?ResultMap和分頁操作示例詳解

    這篇文章主要為大家介紹了Mybatis?ResultMap和分頁操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • 如何使用Java生成具有安全哈希的QR碼

    如何使用Java生成具有安全哈希的QR碼

    這篇文章主要介紹了如何使用Java生成具有安全哈希的QR碼,這是關于如何在Java中使用salt生成QR代碼和安全散列字符串的分步教程。,需要的朋友可以參考下
    2019-06-06

最新評論