最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

在 Java 中,常用的數(shù)據(jù)結(jié)構(gòu)可以通過 集合框架(Collections Framework) 實現(xiàn),也可以手動實現(xiàn)。以下是常見數(shù)據(jù)結(jié)構(gòu)及其特點,以及對應的 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;
        }
    }
}

總結(jié)

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

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

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

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

相關(guān)文章

  • 使用idea部署springboot項目到docker實踐

    使用idea部署springboot項目到docker實踐

    這篇文章主要介紹了使用idea部署springboot項目到docker實踐,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2026-04-04
  • 為什么不推薦使用BeanUtils屬性轉(zhuǎn)換工具示例詳解

    為什么不推薦使用BeanUtils屬性轉(zhuǎn)換工具示例詳解

    這篇文章主要介紹了為什么不推薦使用BeanUtils屬性轉(zhuǎn)換工具,本文通過示例代碼給大家詳細介紹,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Java對文件進行基本操作案例講解

    Java對文件進行基本操作案例講解

    這篇文章主要介紹了Java對文件進行基本操作案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是本文的詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 淺談Java內(nèi)部類與靜態(tài)內(nèi)部類的區(qū)別

    淺談Java內(nèi)部類與靜態(tài)內(nèi)部類的區(qū)別

    本文主要介紹了淺談Java內(nèi)部類與靜態(tài)內(nèi)部類的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • SpringBoot?如何從容器中獲取對象

    SpringBoot?如何從容器中獲取對象

    這篇文章主要介紹了SpringBoot?如何從容器中獲取對象,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • SpringBoot實現(xiàn)RAS+AES自動接口解密

    SpringBoot實現(xiàn)RAS+AES自動接口解密

    本文主要介紹了SpringBoot實現(xiàn)RAS+AES自動接口解密,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • MyBatisPlus自定義SQL的實現(xiàn)

    MyBatisPlus自定義SQL的實現(xiàn)

    MyBatisPlus提供了自定義SQL功能,允許開發(fā)者在Mapper接口中定義方法,并通過XML文件或注解編寫SQL語句,本文詳解了如何在MP中使用自定義SQL,感興趣的可以了解一下
    2024-09-09
  • MybatisPlus搭建項目環(huán)境及分頁插件

    MybatisPlus搭建項目環(huán)境及分頁插件

    Mybatis-Plus(簡稱MP)是一個Mybatis的增強工具,在Mybatis的基礎上只做增強不做改變,為簡化開發(fā)、提高效率而生,下面這篇文章主要給大家介紹了關(guān)于MybatisPlus搭建項目環(huán)境及分頁插件的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Java常用集合之Set和Map的用法詳解

    Java常用集合之Set和Map的用法詳解

    這篇文章將通過一些示例為大家詳細介紹一下Java常用集合中Set和Map的用法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-07-07
  • 基于FileNotFoundException問題的解決

    基于FileNotFoundException問題的解決

    這篇文章主要介紹了基于FileNotFoundException問題的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論

鄂尔多斯市| 陵川县| 北川| 仁寿县| 昭觉县| 吉隆县| 鄂伦春自治旗| 攀枝花市| 灵石县| 英吉沙县| 永寿县| 花莲市| 洱源县| 平度市| 望城县| 仪征市| 晋城| 尼玛县| 蒲江县| 淮阳县| 隆化县| 陇西县| 东山县| 英吉沙县| 阳谷县| 东辽县| 巴南区| 阿拉善盟| 陇川县| 突泉县| 安岳县| 手机| 望江县| 中宁县| 宁远县| 冀州市| 南康市| 永善县| 山东| 勃利县| 临清市|