當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java List和ArrayList的區別用法及代碼示例


集合是一組表示為單個單元的單獨對象。 Java提供了一個集合框架它定義了多個類和接口來將一組對象表示為一個單元。該框架由 List 接口以及 ArrayList 類組成。

在本文中,討論了 List 和 ArrayList 之間的區別。

Difference-between-List-and-ArrayList-in-Java

List Interface是個孩子接口集合。它是一個有序的對象集合,其中可以存儲重複的值。由於 List 保留插入順序,因此它允許位置訪問和插入元素。列表接口的實現是ArrayList,LinkedList,Vector, 和Stack。 List是一個接口,List的實例可以通過實現各種類來創建。

極客如果上麵所說的聽起來令人困惑,那麽請參考下圖,您可以在實現 List 接口之前輕鬆找到由類組成的層次結構和 List 接口。

Collections-in-Java

示例

Java


// Java program to demonstrate the
// working of a List with ArrayList
// class
// Importing all utility classes 
import java.util.*;
// Main class
public class GFG {
   
    // Main driver method
    public static void main(String[] args)
    {
        // Creating an object of List class
          // Declaring an object of String type with
        // reference to ArrayList class
        // Type safe list 
        List<String> al = new ArrayList<String>();
       
        // Adding elements using add() method
        // Custom input elements
        al.add("Geeks");
        al.add("for");
        al.add("Geeks");
        // Print and display the elements in
        // ArrayList class object 
        System.out.println(al);
    }
}
輸出
[Geeks, for, Geeks]

現在詳細討論java中ArrayList的下一個概念。因此ArrayList 本質上是集合框架的一部分,並且存在於java.util 包中。它為我們提供了Java中的動態數組。該類實現了List接口。與列表類似,如果集合增大,ArrayList 的大小會自動增加;如果從集合中刪除對象,則 ArrayList 的大小會自動減小。 Java ArrayList 允許我們隨機訪問該列表。 ArrayList 不能用於原始類型,如 int、char 等。我們需要一個包裝類對於此類情況。下麵通過一個例子來演示ArrayList的實現。

用法:

new ArrayList();

這隻是在堆內存中創建了一個新內存。為了訪問對象,我們需要一個引用變量,因為這是麵向對象編程中的經驗法則。

ArrayList obj = new ArrayList();

到目前為止,我們隻創建了一個對象,但尚未定義 ArrayList 對象中的元素類型。因此,像往常一樣,我們將使用標識符來傳遞字符串類型、整數類型、兩者或其他一些類型。如下圖所示。

ArrayList<Integer> obj = new ArrayList<>();
ArrayList<String> obj = new ArrayList<>();

Note: While adding the elements to ArrayList if we do add element at an index say ‘i’th then in our ArrayList all the elements shifts towards right where the previous element which was at ‘i’ th before addition will now be at ‘i+1’ th index. It will not be replaces just unlikely as we do see in arrays.

現在,我們已經通過上述語法理解了解了聲明以及如何初始化 List,現在讓我們在程序中實現相同的內容以更好地理解。

例子:

Java


// Java Program to Demonstrate
// Working of an ArrayList class
// Importing all classes from java.util package
import java.util.*;
// Main class
class GFG {
    // Main driver method
    public static void main(String[] args)
    {
        // Creating an ArrayList of String type
        // Type safe ArrayList
        ArrayList<String> al = new ArrayList<String>();
        // Adding elements to above object created
        // Custom input elements
        al.add("Geeks");
        al.add("for");
        al.add("Geeks");
        // Print and display the elements of ArrayList
        System.out.println(al);
        // adding element at index where
        // element is already present
        al.add(1, "Hi");
        // Print and display the elements of ArrayList
        System.out.println(al);
    }
}
輸出
[Geeks, for, Geeks]
[Geeks, Hi, for, Geeks]

現在讓我們討論上麵討論的java中兩個類之間的區別,即List與ArrayList類,它們以表格格式顯示如下,以便清楚thin-line理解。

Java 中的列表與ArrayList

List ArrayList
列表是一個接口 ArrayList 是一個類
List 接口擴展了 Collection 框架 ArrayList 擴展 AbstractList 類並實現 List 接口
列表無法實例化。 ArrayList可以實例化。
列表接口用於創建與其索引號關聯的元素(對象)列表。 ArrayList 類用於創建包含對象的動態數組。
列表接口創建按順序存儲的元素集合,並使用索引來識別和訪問它們。 ArrayList 創建一個對象數組,該數組可以動態增長。


相關用法


注:本文由純淨天空篩選整理自KaashyapMSK大神的英文原創作品 Difference between List and ArrayList in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。