java中常見數據結構

ArrayList?是 Java 集合框架(Java Collections Framework)中的一個重要類,它實現了?List?接口,并提供了動態數組的功能。以下是?ArrayList?上的一些常用方法:

  1. 構造方法

    • ArrayList<E>(): 構造一個空的?ArrayList
    • ArrayList<E>(Collection<? extends E> c): 構造一個包含指定集合的元素的?ArrayList
  2. 添加元素

    • boolean add(E e): 將指定的元素添加到此列表的末尾。
    • void add(int index, E element): 在此列表的指定位置插入指定的元素。
    • boolean addAll(Collection<? extends E> c): 將指定集合中的所有元素添加到此列表的末尾。
    • boolean addAll(int index, Collection<? extends E> c): 將指定集合中的所有元素插入到此列表中的指定位置。
  3. 刪除元素

    • void clear(): 從列表中移除所有元素。
    • E remove(int index): 移除列表中指定位置的元素。
    • boolean remove(Object o): 從列表中移除首次出現的指定元素(如果存在)。
    • boolean removeAll(Collection<?> c): 從列表中移除指定集合中包含的所有元素(只保留此列表中未包含在指定集合中的元素)。
    • boolean retainAll(Collection<?> c): 僅保留此列表中指定集合中也包含的元素(從此列表中移除未包含在指定集合中的所有元素)。
  4. 獲取元素

    • E get(int index): 返回列表中指定位置的元素。
    • int indexOf(Object o): 返回此列表中首次出現的指定元素的索引;如果此列表不包含該元素,則返回 -1。
    • int lastIndexOf(Object o): 返回此列表中最后出現的指定元素的索引;如果此列表不包含該元素,則返回 -1。
    • List<E> subList(int fromIndex, int toIndex): 返回列表中指定的 fromIndex(包括)和 toIndex(不包括)之間的部分視圖。
  5. 修改元素

    • E set(int index, E element): 用指定的元素替換此列表中指定位置的元素。
  6. 檢查元素

    • boolean contains(Object o): 如果此列表包含指定的元素,則返回 true。
    • boolean isEmpty(): 如果此列表不包含元素,則返回 true。
  7. 列表大小

    • int size(): 返回此列表中的元素數。
  8. 遍歷列表
    通常使用 for-each 循環(也稱為增強型 for 循環)或迭代器(Iterator)來遍歷?ArrayList?中的元素。

  9. 轉換為數組

    • Object[] toArray(): 返回一個包含此列表中所有元素的數組。
    • <T> T[] toArray(T[] a): 返回一個包含此列表中所有元素的數組;返回數組的運行時類型是指定數組的運行時類型 T 的數組類型。

注意:上述方法中的?E?是類型參數,表示列表中元素的類型。在實際使用中,你需要用具體的類型(如?StringInteger?等)來替換它。


? ??// 創建一個String類型的hashset
? ? ? ? HashSet<String>?set?=?new?HashSet<>();

在Java中,集合(Collections)是一個非常重要的概念,它允許你存儲和操作對象的集合,而無需關心這些對象的具體實現。Java集合框架(Java Collections Framework)提供了一套用于表示和操作集合的統一架構。

Java集合框架主要包含以下幾個接口和類:

  1. Collection接口
    • 是集合層次結構中的根接口。
    • 它定義了集合的基本操作,如添加、刪除、查找等。
  2. List接口
    • 繼承自Collection接口。
    • 它是有序的集合(也稱為序列),允許包含重復的元素。
    • 常用的實現類有ArrayList、LinkedList和Vector。
    • ArrayList 是 List 接口的一種實現,它是使用數組來實現的。

      LinkedList 是 List 接口的一種實現,它是使用鏈表來實現的。

      ArrayList 遍歷和查找元素比較快。LinkedList 遍歷和查找元素比較慢。

      ArrayList 添加、刪除元素比較慢。LinkedList 添加、刪除元素比較快。

  3. Set接口
    • 繼承自Collection接口。
    • 它不包含重復的元素。
    • 常用的實現類有HashSet、LinkedHashSet和TreeSet。
  4. Queue接口
    • 隊列是一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的后端(rear)進行插入操作。
    • 常用的實現類有LinkedList、PriorityQueue等。
  5. Deque接口(雙端隊列):
    • 是一個具有隊列和棧的性質的線性表。
    • 可以在兩端插入和刪除元素。
    • 常用的實現類有ArrayDeque和LinkedList。
  6. Map接口
    • 它將唯一的鍵映射到值。
    • Map中不允許存在重復的鍵,但每個鍵可以映射到多個值(在MultiMap中)。
    • 常用的實現類有HashMap、LinkedHashMap、TreeMap和Hashtable。
  7. 迭代器(Iterator)
    • 迭代器模式使得能夠順序訪問一個聚合對象中的各個元素,而又不暴露該對象的內部表示。
    • 通過迭代器,你可以遍歷集合中的元素,而無需了解集合的具體實現。
  8. Collections類
    • 它是一個工具類,提供了許多靜態方法,用于對集合進行排序、搜索、線程安全化等操作。

使用Java集合框架可以極大地簡化代碼,提高代碼的可讀性和可維護性。同時,集合框架也提供了很多現成的算法和數據結構,使得你可以更加專注于業務邏輯的實現。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36788.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36788.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36788.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

git基本使用(二):git分支的操作命令

Git 的多分支管理是指在同一個倉庫中創建和管理多個分支&#xff0c;每個分支可以獨立開發&#xff0c;互不干擾。分支是 Git 中的一種強大功能&#xff0c;允許開發人員同時在多個不同的功能、修復或實驗上工作&#xff0c;而不會影響主分支或其他分支。通過多分支管理&#x…

spring-boot-starter-json配置對象屬性為空不顯示

問題背景 在Spring Boot中使用spring-boot-starter-json&#xff08;通常是通過jackson實現的&#xff09;時&#xff0c;如果你希望在序列化對象時&#xff0c;如果某個屬性為空&#xff0c;則不顯示該屬性&#xff0c;你可以使用JsonInclude注解來實現這一點。 pom.xml <…

Java數據結構算法(最長遞增序列二分查找)

前言: 最長遞增子序列&#xff08;Longest Increasing Subsequence, LIS&#xff09;是指在一個給定的序列中&#xff0c;找到一個最長的子序列&#xff0c;使得這個子序列中的元素是單調遞增的。子序列不要求在原序列中連續。 實現原理 使用一個 tails 列表&#xff0c;其中…

Java對象集合按照指定元素順序排序

需求背景 最近在對一個集合列表的數據進行排序&#xff0c;需求是要集合數據按照一個排序狀態值進行排序&#xff0c;而這個狀態值&#xff0c;不是按照從小到大這樣的順序排序的&#xff0c;而是要按照特定的順序&#xff0c;比如按照1, 0, 2的順序排的&#xff0c;所以需要自…

clickhouse count和uniqCombined

count(distinct ) 和 uniqCombined 獲取去重后的總數。 去重&#xff1a;order by distinct argMax group by 哪個好&#xff1f;&#xff1f; clickhouse數據去重函數介紹&#xff08;count distinct&#xff09;_clickhouse distinct-CSDN博客

stm32-USART通信

什么是usart&#xff1f;和其他通信又有什么區別&#xff1f; 如下圖&#xff1a; USART是一種用于串行通信的設備&#xff0c;可以在同步和異步模式下工作。 usart有兩根數據線&#xff0c;一根發送線&#xff08;tx&#xff09;一根接收線&#xff08;rx&#xff09;&#x…

2D卷積核處理3D(時序)數據

2D卷積核處理3D&#xff08;時序&#xff09;數據 一、Make A Video的處理方法&#xff08;PseudoConv3d&#xff09;二、Tune A Video的處理方法&#xff08;InflatedConv3d&#xff09;比較與分析相似點不同點結論 Conv2D一般用于處理image&#xff0c;dim一般是4&#xff0c…

準備了一些簡單的面試題

當了一次面試官&#xff0c;主要是面試爬蟲崗位&#xff0c;具體涉及scrapy爬蟲框架和一些數據存儲的小問題。具體的問題如下&#xff1a; scrapy框架如何將單機版爬蟲改為分布式爬蟲【使用scrapy_redis】&#xff0c;具體來講需要修改哪幾個組件的哪些具體部分Spider 1. 如何…

python3 List常用函數詳細解釋

python中 列表&#xff08;list&#xff09;的copy辦法 1.先解決一個報錯。 a [1,2,3] b a.copy print( b)報錯&#xff1a; AttributeError: builtin_function_or_method object has no attribute copy這是因為a.copy語句并沒有執行copy函數&#xff0c;而是把a.copy這個函…

React Antd ProTable 如何設置類似于Excel的篩選框

React Antd ProTable 如何設置類似于Excel的篩選框 目標&#xff1a;在web頁面的table表格中完成類似于EXCEL的Filter篩選功能。 示例圖&#xff1a;點擊標題列上方的漏斗狀圖標&#xff0c;即可對數據進行篩選。 ProTable 前景提要 ProTable API中有說明&#xff0c;是有…

解決所有終端中文輸出亂碼的問題

一、系統自帶的cmd.exe 以及 Git的bash.exe、sh.exe、git-bash.exe和git-cmd.exe&#xff0c;和PowerShell默認使用“當前系統區域設置”設定好的936 (ANSI/OEM - 簡體中文 GBK)語言編碼。 1、[當前代碼頁] 的936 (ANSI/OEM - 簡體中文 GBK) 是導致中文亂碼的原因 在控制面板→…

網絡抓包分析工具

摘要 隨著網絡技術的快速發展&#xff0c;網絡數據的傳輸和處理變得日益復雜。網絡抓包分析工具作為網絡故障排查、性能優化以及安全審計的重要工具&#xff0c;對于提升網絡管理的效率和準確性具有重要意義。本文旨在設計并實現一款高效、易用的網絡抓包分析工具&#xff0c;…

期末測試一

字符數組的排序注意的問題 &#xff1a; 1.對于輸入字符的時候 如果給出了要輸入幾個字符 n >>>>> for ( i 0 ; i < n ;i ) { scanf("%c",&ch); } 如果說直到輸入到換行符結束 >>>>>>while ( ch! \ n ) 這個需要額…

CSS|04 復合選擇器偽類選擇器屬性選擇器美化超鏈接

基本選擇器&#xff1a;見上篇基本選擇器 復合選擇器選擇器1,選擇器2{屬性:值;} 多元素選擇器&#xff0c;同時匹配選擇器1和選擇器2&#xff0c;多個選擇器之間用逗號分隔舉例&#xff1a; p,h1,h2{margin:0px;}E F{屬性:值;} 后代元素選擇器&#xff0c;匹配所有屬于E元素后…

基于長短時記憶網絡LSTM的TE過程故障診斷(MATLAB R2021B)

實驗所用 TE 仿真過程的數據集是網上公開的數據集&#xff0c;該數據集中的訓練集和測試集分別包含 20 種故障工況和一種正常工況數據&#xff0c;其中所采集的每個樣本信號包含 41 個測量變量和 11 個控制變量&#xff0c;所以每個時刻采集到的樣本有 52 個觀測變量。 TE 仿真…

NoSQL之Redis配置與管理

目錄 一、關系型數據庫和非關系型數據庫 1.關系型數據庫 2.非關系型數據庫 3.關系型數據庫和非關系型數據庫區別 二、Redis 1.Redis簡介 2.Redis 的優點 3.Redis 使用場景 4.Redis的數據類型 5.哪些數據適合放入緩存中&#xff1f; 6.Redis為什么這么快&#xff1f;…

BUG:AttributeError: module ‘websocket‘ has no attribute ‘enableTrace’

AttributeError: module ‘websocket’ has no attribute enableTrace’ 環境 windows 11 Python 3.10websocket 0.2.1 websocket-client 1.8.0 websockets 11.0.3 rel 0.4.9.19詳情 一開始…

ActiveMQ camel

游覽器輸入地址: http://127.0.0.1:8161/admin/ 訪問activemq管理臺 賬號和密碼默認為: admin/admin# yml配置的密碼也是如下的密碼 activemq:url: failover:(tcp://localhost:61616)username: adminpassword: adminComponent public class ActiveMqReceiveRouter extends Rout…

AudioLM音頻生成模型

GPT-4o (OpenAI) AudioLM&#xff08;Audio Language Model&#xff09;是一種生成音頻的深度學習模型。它可以通過學習語言模型的結構來生成連貫和高質量的音頻信號。這類模型通常應用于語音合成、音樂生成和音頻內容生成等領域。以下是一些與AudioLM相關的核心概念和技術細…

【JavaEE進階】Spring AOP使用篇

目錄 1.AOP概述 2.SpringAOP快速入門 2.1 引入AOP依賴 2.2 編寫AOP程序 3. Spring AOP詳解 3.1 Spring AOP 核心概念 3.1.1切點(Pointcut) 3.1.2 連接點 (Join Point) 3.1.3 通知(Advice) 3.1.4 切面(Aspect) 3.2 通知類型 3.3PointCut 3.4 切面優先級 3.5 切點表…