ArrayList

目錄

1.ArrayList簡介

2.ArrayList的構造?

2.1ArrayList()

?2.2ArrayList(Collection c)

?2.3ArrayList(int initialCapacity)

3.ArrayList常見操作 ?

4.ArrayList的遍歷的遍歷


1.ArrayList簡介

在集合框架中, ArrayList 是一個普通的類,實現了 List 接口,具體框架圖如下:

?說明:

1. ArrayList 是以泛型方式實現的,使用時必須要先實例化
2. ArrayList 實現了 RandomAccess 接口,表明 ArrayList 支持隨機訪問
3. ArrayList 實現了 Cloneable 接口,表明 ArrayList 是可以 clone
4. ArrayList 實現了 Serializable 接口,表明 ArrayList 是支持序列化的
5. Vector 不同, ArrayList 不是線程安全的,在單線程下可以使用,在多線程中可以選擇 Vector 或者 CopyOnWriteArrayList
6. ArrayList 底層是一段連續的空間,并且可以動態擴容,是一個動態類型的順序表

2.ArrayList的構造?

2.1ArrayList()

 public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>();arrayList.add(1);arrayList.add(2);}

源代碼:

?2.2ArrayList(Collection<? extends E> c)

<? extends E>這是什么?
規定了類型上界,即該數組元素的類型上限是E,后面定義裝載的元素類型必須是E本身或者E的子類。

public static void main(String[] args) {ArrayList<Integer> arraylist = new ArrayList<>();arraylist.add(-1);arraylist.add(100);arraylist.add(200);ArrayList<Number> arrayList2 = new ArrayList<>(arraylist);arrayList2.add(-100);System.out.println(arrayList2);}

源代碼:

?2.3ArrayList(int initialCapacity)

 public static void main(String[] args) {ArrayList<Integer> arrayList = new ArrayList<>(2);arrayList.add(100);arrayList.add(200);}

?

匯總:


3.ArrayList常見操作 ?

常用方法匯總:

方法
解釋
boolean add (E e)
尾插 e
void add (int index, E element)
e 插入到 index 位置
boolean addAll (Collection<? extends E> c)
尾插 c 中的元素
E remove (int index)
刪除 index 位置元素
boolean remove (Object o)
刪除遇到的第一個 o
E get (int index)
獲取下標 index 位置元素
E set (int index, E element)
將下標 index 位置元素設置為 element
void clear ()
清空
boolean contains (Object o)
判斷 o 是否在線性表中
int indexOf (Object o)
返回第一個 o 所在下標
int lastIndexOf (Object o)
返回最后一個 o 的下標
List<E> subList (int fromIndex, int toIndex)
截取部分 list

抓重點解析:

1.boolean add(E e)

源代碼:

?

總結
1. 檢測是否真正需要擴容,如果是調用 grow 準備擴容
2. 預估需要庫容的大小 初步預估按照1.5 倍大小擴容 如果用戶所需大小超過預估1.5 倍大小,則按照用戶所需大小擴容 ,真正擴容之前檢測是否能擴容成功,防止太大導致擴容失敗
3. 使用 copyOf 進行擴容

2.?void add(int index, E element)

list index 位置插入指定元素, index 及后續的元素統一往后搬移一個位置
3.? E remove (int index)與boolean remove (Object o)
ArrayList<Integer> arraylist = new ArrayList<>();
arraylist.add(1);
arraylist.add(100);
arraylist.add(0);
arraylist.remove(0);
System.out.println(arraylist);//刪除的是下標為0的元素
arraylist.remove(new Integer(0));
System.out.println(arraylist);//刪除的是元素0

刪除指定元素,找到了就刪除,該元素之后的元素統一往前搬移一個位置

?4.List<E> subList(int fromIndex, int toIndex)

構成一個新的 SubList 返回 , 但是和 ArrayList 共用一個 elementData 數組
public static void main(String[] args) {ArrayList<Integer> arraylist = new ArrayList<>();arraylist.add(1);arraylist.add(100);arraylist.add(0);List<Integer> sub = arraylist.subList(1, 3);System.out.println(sub);sub.set(0,100000);System.out.println(sub);System.out.println(arraylist);}


4.ArrayList的遍歷的遍歷

ArrayList 可以使用三方方式遍歷: for 循環 + 下標、 foreach 、使用迭代器
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
// 使用下標+for遍歷
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
System.out.println();
// 借助foreach遍歷
for (Integer integer : list) {
System.out.print(integer + " ");
}
System.out.println();
Iterator<Integer> it = list.listIterator();
while(it.hasNext()){
System.out.print(it.next() + " ");
}
System.out.println();
}

迭代器:?


?

以上為我個人的小分享,如有問題,歡迎討論!!!?

都看到這了,不如關注一下,給個免費的贊?

?

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

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

相關文章

【jenkins】jenkins流水線構建打包jar,生成docker鏡像,重啟docker服務的過程,在jenkins上一鍵完成,實現提交代碼自動構建的功能

【jenkins】jenkins流水線構建打包jar&#xff0c;生成docker鏡像&#xff0c;重啟docker服務的過程&#xff0c;在jenkins上一鍵完成&#xff0c;實現提交代碼自動構建&#xff0c;服務重啟&#xff0c;服務發布的功能。一鍵實現。非常的舒服。 1. 啟動腳本 shell腳本 這是 s…

MySQL 中 不等于 會過濾掉 Null 的問題

null值與任意值比較時都為fasle not in 、"!"、"not like"條件過濾都會過濾掉null值的數據 SELECT * from temp; SELECT * from temp where score not in (70); 返回null解決方法: SELECT * from temp where score not in (70) or score is null;SELECT…

迅捷視頻工具箱:多功能音視頻處理軟件

這是一款以視頻剪輯、視頻轉換、屏幕錄像等特色功能為主&#xff0c;同時附帶有視頻壓縮、視頻分割、視頻合并等常用視頻處理功能為主的視頻編輯軟件。該軟件操作簡單易用&#xff0c;即使沒有視頻處理經驗的用戶也可以輕松上手。將視頻添加到工具箱對應功能后&#xff0c;簡單…

zookeeper-安裝部署

詳情可以查看添加鏈接描述 1.安裝jdk apt-get install openjdk-8-jdk2.安裝單機zookeeper # 下載 #https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1.tar.gz # 用這個包啟動的時候會報錯Error: Could not find or load main class org.apach…

【OFDM系列】DFT為什么能求頻率幅度譜?DFT后的X[k]與x(n)幅度的關系?DFT/IDFT底層數學原理?

文章目錄 問題引入鋪墊一些小公式DFT公式證明DFT公式分解為4部分先考慮k10的情況:再考慮k1≠0的情況: DFT計算后&#xff0c;X(k)與x(n)的關系&#xff1a; Matlab FFT示例代碼IDFT公式證明Matlab調用FFT/IFFT并繪圖 問題引入 上面是DFT和IDFT的公式&#xff0c;IDFT先不談。在…

django實現文件上傳

在django中實現文件上傳有三種方法可以實現&#xff1a; 自己手動寫使用Form組件使用ModelForm組件 其中使用ModelForm組件實現是最簡單的。 1、自己手寫 先寫一個上傳的頁面 upload_file.html enctype"multipart/form-data 一定要加這個&#xff0c;不然只會上傳文件名…

HTTPS 的加密流程

目錄 一、HTTPS是什么&#xff1f; 二、為什么要加密 三、"加密" 是什么 四、HTTPS 的工作過程 1.對稱加密 2.非對稱加密 3.中間人攻擊 4.證書 總結 一、HTTPS是什么&#xff1f; HTTPS (Hyper Text Transfer Protocol Secure) 是基于 HTTP 協議之上的安全協議&…

四、Controller 配置總結、RestFul 風格

文章目錄 一、Controller 配置總結二、RestFul 風格2.1 使用 RequestMapping 的 method 屬性指定請求類型 三、擴展&#xff1a;小黃鴨調試法 一、Controller 配置總結 實現 Controller 控制器的方式 實現 Controller 接口&#xff0c;重寫 handleRequest 方法實現 控制器實現 …

Markdown編輯器 Mac版Typora功能介紹

Typora mac是一款跨平臺的Markdown編輯器&#xff0c;支持Windows、MacOS和Linux操作系統。它具有實時預覽功能&#xff0c;能夠自動將Markdown文本轉換為漂亮的排版效果&#xff0c;讓用戶專注于寫作內容而不必關心格式調整。 Typora Mac版除了支持常見的Markdown語法外&#…

騰訊云輕量服務器測評:2核 2G 4M

騰訊云輕量2核2G4M服務器&#xff0c;4M帶寬下載速度可達512KB/秒&#xff0c;系統盤為50GB SSD盤&#xff0c;300GB月流量&#xff0c;地域節點可選上海、廣州和北京&#xff0c;騰訊云百科分享騰訊云2核2G4M輕量應用服務器配置性能表&#xff1a; 目錄 騰訊云輕量2核2G4M服…

Linux下使用Ffmpeg循環推流

#前臺運行 ffmpeg -stream_loop -1 -re -i "/usr/local/mp4/test.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://10.55.134.12/live/test#后臺運行 nohup ffmpeg -stream_loop -1 -re -i "/usr/local/mp4/test.mp4" -vcodec h264 -ac…

爬蟲逆向實戰(十五)--阿某某營登錄

一、數據接口分析 主頁地址&#xff1a;阿某某營 1、抓包 通過抓包可以發現登錄接口是Users/Login 2、判斷是否有加密參數 請求參數是否加密&#xff1f; 通過查看“載荷”模塊可以發現有一個s加密參數 請求頭是否加密&#xff1f; 無響應是否加密&#xff1f; 無cookie是…

【LangChain】P1 LangChain 應用程序的核心構建模塊 LLMChain 以及其三大部分

LangChain 的核心構建模塊 LLMChain LangChain 應用程序的核心構建模塊語言模型 - LLMs提示模板 - Prompt templates輸出解析器 - Output Parsers LLMChain 組合 LangChain 應用程序的核心構建模塊 LangChain 應用程序的核心構建模塊 LLMChain 由三部分組成&#xff1a; 語言…

電腦鍵盤打不了字按哪個鍵恢復?最新分享!

“有沒有朋友知道電腦鍵盤為什么會莫名其妙就打不了字&#xff1f;明明用得好好的&#xff0c;突然就打不了字了&#xff0c;真的讓人很迷惑&#xff01;有什么方法可以解決嗎&#xff1f;” 電腦鍵盤為我們的辦公提供了很大的方便&#xff0c;我們可以利用鍵盤輸入我們需要的文…

安防監控視頻云存儲平臺EasyCVRH.265轉碼功能更新:新增分辨率配置

安防視頻集中存儲EasyCVR視頻監控綜合管理平臺可以根據不同的場景需求&#xff0c;讓平臺在內網、專網、VPN、廣域網、互聯網等各種環境下進行音視頻的采集、接入與多端分發。在視頻能力上&#xff0c;視頻云存儲平臺EasyCVR可實現視頻實時直播、云端錄像、視頻云存儲、視頻存儲…

Python文件操作與輸入輸出:從基礎到高級應用

文章目錄 &#x1f340;引言&#x1f340;文件操作基礎&#x1f340;上下文管理器與文件自動關閉&#x1f340;文件的迭代與逐行讀取&#x1f340;文件的其他常見操作&#x1f340;輸入輸出基礎&#x1f340; 文件輸入輸出&#x1f340;格式化輸出&#x1f340;高級文件操作&am…

【BASH】回顧與知識點梳理(二十七)

【BASH】回顧與知識點梳理 二十七 二十七. 磁盤配額(Quota)27.1 磁盤配額 (Quota) 的應用與實作什么是 QuotaQuota 的一般用途Quota 的使用限制Quota 的規范設定項目 27.2 一個 XFS 文件系統的 Quota 實作范例實作 Quota 流程&#xff1a;設定賬號實作 Quota 流程-1&#xff1a…

jenkins gitlab 安裝

目錄 一 準備安裝環境 二 安裝gitlab軟件 三 配置gitlab 四 重新加載配置啟動gitlab 五 修改密碼 五 創建用戶組 一 準備安裝環境 sudo yum update sudo yum install -y curl policycoreutils-python openssh-server安裝 Postfix 郵件服務器&#xff0c;以便 Git…

qt事件系統源碼-----定時器

qt定時器的使用一般有以下幾種方式&#xff1a; 1、直接使用QTimer對象&#xff0c;綁定定時器的timeout信號&#xff1b; 2、使用QTimer的靜態方法singleshot方法&#xff0c;產生一個一次性的定時事件 3、在QObject子類中&#xff0c;調用startTimer方法&#xff0c;產生定…

矢量繪圖UI設計軟件Sketch mac中文版軟件說明

Sketch mac是一款適用于 UI/UX 設計、網頁設計、圖標制作等領域的矢量繪圖軟件。 Sketch mac軟件特點 1. 簡單易用的界面設計&#xff1a;Sketch 的用戶界面簡潔明了&#xff0c;使得用戶可以輕松上手操作&#xff0c;不需要復雜的學習過程。 2. 強大的矢量繪圖功能&#xff1a…