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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...