Java入門系列:實例講解ArrayList用法

来源:http://www.cnblogs.com/kungfupanda/archive/2017/08/14/7357142.html
-Advertisement-
Play Games

本文通過實例講解Java中如何使用ArrayList類。 Java.util.ArrayList類是一個動態數組類型,也就是說,ArrayList對象既有數組的特征,也有鏈表的特征。可以隨時從鏈表中添加或刪除一個元素。ArrayList實現了List介面。 大家知道,數組是靜態的,數組被初始化之後, ...


本文通過實例講解Java中如何使用ArrayList類。

Java.util.ArrayList類是一個動態數組類型,也就是說,ArrayList對象既有數組的特征,也有鏈表的特征。可以隨時從鏈表中添加或刪除一個元素。ArrayList實現了List介面。

大家知道,數組是靜態的,數組被初始化之後,數組長度就不能再改變了。ArrayList是可以動態改變大小的。那麼,什麼時候使用Array(數組),什麼時候使用ArrayList?答案是:當我們不知道到底有多少個數據元素的時候,就可使用ArrayList;如果知道數據集合有多少個元素,就用數組。

1.ArrayList構造函數

ArrayList類支持3個構造方法。

  • Arraylist()

這個構造方法構造了一個空的鏈表。

  • ArrayList(Collection<? extends E> c)

這個構造方法構造了一個包含指定元素集合的鏈表,註意,這裡的字元E是一個標記,用來表示集合中元素的類型。至於具體是什麼類型,需要你在使用這個構造方法的時候來指定。

  • ArrayList(int initialCapacity)

這是第三個構造方法,構造了一個指定大小但內容為空的鏈表。initialCapacity參數就是初始容量大小。

舉例來說,如果你要創建一個空的數組鏈表,用來存放String類型的對象,那麼你可以像下麵這樣做:

ArrayList<String> list = new ArrayList<String>();

如果你需要創建一個指定初始容量的數組鏈表,你可以像下麵這樣做:

ArrayList<Integer> list = new ArrayList<Integer>(7);

註意:ArrayList類只支持對象類型,不支持 基礎數據類型。就是說ArrayList對象只能存放對象,不能存放基礎數據類型的數據。

2.ArrayList常用方法

下麵是總結了一些比較常用的ArrayList類成員方法:

  • 增加元素到鏈表中
    • boolean add(Element e)
      增加指定元素到鏈表尾部.
    • void add(int index, Element e)
      增加指定元素到鏈表指定位置.
  • 從鏈表中刪除元素
    • void clear()
      從鏈表中刪除所有元素.
    • E remove(int index)
      刪除鏈表中指定位置的元素.
    • protected void removeRange(int start, int end)
      刪除鏈表中從某一個位置開始到某一個位置結束的元素。
  • 獲取鏈表中的元素
    • E get(int index)
      獲取鏈表中指定位置處的元素.
    • Object[] toArray()
      獲取一個數組,數組中所有元素是鏈表中的元素.(即將鏈表轉換為一個數組)
  • 修改某個元素
    • E set(int index, E element)
      將鏈表中指定位置上的元素替換成新元素。
  • 搜索元素
    • boolean contains(Object o)
      如果鏈表包含指定元素,返回true.
    • int indexOf(Object o)
      返回元素在鏈表中第一次出現的位置,如果返回-1,表示鏈表中沒有這個元素。
    • int lastIndexOf(Object o)
      返回元素在鏈表中最後一次出現的位置,如果返回-1,表示鏈表中沒有這個元素。
  • 檢查鏈表是否為空
    • boolean isEmpty()
      返回true表示鏈表中沒有任何元素.
  • 獲取鏈表大小
    • int size()
      返回鏈表長度(鏈表包含元素的個數).

以上是ArrayList類中使用比較多的成員方法。每個方法的更詳細的說明或其它沒有提及到的方法,讀者可以參考java官方api

3.ArrayList使用實例

複製代碼
 1 import java.util.*;
 2 
 3 public class ArrayListExamples {
 4 
 5     public static void main(String args[]) {
 6         // 創建一個空的數組鏈表對象list,list用來存放String類型的數據
 7         ArrayList<String> list = new ArrayList<String>();
 8 
 9         // 增加元素到list對象中
10         list.add("Item1");
11         list.add("Item2");
12         list.add(2, "Item3"); // 此條語句將會把“Item3”字元串增加到list的第3個位置。
14         list.add("Item4");
15 
16         // 顯示數組鏈表中的內容
17         System.out.println("The arraylist contains the following elements: "
18                 + list);
19 
20         // 檢查元素的位置
21         int pos = list.indexOf("Item2");
22         System.out.println("The index of Item2 is: " + pos);
23 
24         // 檢查數組鏈表是否為空
25         boolean check = list.isEmpty();
26         System.out.println("Checking if the arraylist is empty: " + check);
27 
28         // 獲取鏈表的大小
29         int size = list.size();
30         System.out.println("The size of the list is: " + size);
31 
32         // 檢查數組鏈表中是否包含某元素
33         boolean element = list.contains("Item5");
34         System.out
35                 .println("Checking if the arraylist contains the object Item5: "
36                         + element);
37 
38         // 獲取指定位置上的元素
39         String item = list.get(0);
40         System.out.println("The item is the index 0 is: " + item);
41 
42         // 遍歷arraylist中的元素
43 
44         // 第1種方法: 迴圈使用元素的索引和鏈表的大小
45         System.out
46                 .println("Retrieving items with loop using index and size list");
47         for (int i = 0; i < list.size(); i++) {
48             System.out.println("Index: " + i + " - Item: " + list.get(i));
49         }
50 
51         // 第2種方法:使用foreach迴圈
52         System.out.println("Retrieving items using foreach loop");
53         for (String str : list) {
54             System.out.println("Item is: " + str);
55         }
56 
57         // 第三種方法:使用迭代器
58         // hasNext(): 返回true表示鏈錶鏈表中還有元素
59         // next(): 返回下一個元素
60         System.out.println("Retrieving items using iterator");
61         for (Iterator<String> it = list.iterator(); it.hasNext();) {
62             System.out.println("Item is: " + it.next());
63         }
64 
65         // 替換元素
66         list.set(1, "NewItem");
67         System.out.println("The arraylist after the replacement is: " + list);
68 
69         // 移除元素
70         // 移除第0個位置上的元素
71         list.remove(0);
72 
73         // 移除第一次找到的 "Item3"元素
74         list.remove("Item3");
75 
76         System.out.println("The final contents of the arraylist are: " + list);
77 
78         // 轉換 ArrayList 為 Array
79         String[] simpleArray = list.toArray(new String[list.size()]);
80         System.out.println("The array created after the conversion of our arraylist is: "
81                         + Arrays.toString(simpleArray));
82     }
83 }

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • C#筆記25:比較和排序(IComparable和IComparer以及它們的泛型實現) 本文摘要: 1:比較和排序的概念; 2:IComparable和IComparer; 3:IComparable和IComparer的泛型實現IComparable<T>和IComparer<T>; 1:比較和 ...
  • //1、 // 裝箱和拆箱是一個抽象的概念 //2、 // 裝箱是將值類型轉換為引用類型 ;拆箱是將引用類型轉換為值類型 // 利用裝箱和拆箱功能,可通過允許值類型的任何值與Object 類型的值相互轉換,將//值類型與引用類型鏈接起來 //例如: int val = 100; object obj... ...
  • //使用Sort方法,可以對集合中的元素進行排序。Sort有三種重載方法,聲明代碼如下所//示。 public void Sort(); //使用集合元素的比較方式進行排序 public void Sort(IComparer comparer); //使用自定義比較器進行排序 public voi... ...
  • Owin Middleware Components(OMCs) 通過安裝Install-Package Microsoft.Owin.Host.SystemWeb 可以讓OMCs在IIS集成管道下工作 在IIS集成管道里,這個request pipeline 包含HttpModules關聯到一組預 ...
  • 諸如 SAP 這樣的企業級應用已成為普遍的流行趨勢。考慮到不同行業和需求的特點,所選平臺必須能夠為不同層面用戶和各種 IT 活動提供靈活的容量需求。 此時上雲也許是種不錯的選擇,而想上雲的企業,一方面希望自己的實施是高效率、低投入的;另一方面,又想把風險降低到最小程度。針對不同的客戶需求,SAP 提... ...
  • Katana在程式集內的程式集名稱空間下查找一個叫做Startup的類, 定義友好命名的Startup類 https://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/owin-startup-class-detect ...
  • PsPing 是微軟 PSTools 工具套件中的其中一個工具,除了用來進行 ICMP Ping 測試,還可用來測試 TCP 埠的連通性,以及 TCP/UDP 網路時延和帶寬。 ...
  • 機器學習是一項已被研究及應用了數十年的專業領域,是一個能基於數據輸入,進而導出預測成果的繁複電腦系統流程。而 Azure 的機器學習,則封裝了這多年來機器學習的研究成果(如在 Bing 和 Xbox Live 已被使用的),能夠以簡潔的方法進行大數據分析時所需要的複雜數學模型,同時還大幅降低了進行... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...