© maxtkm/Shutterstock.com

與其他編程語言一樣,Java 中的數組是程序員高效管理和處理大量數據的非常有用的工具。如果您曾經想知道在幕後組織和處理的數據量有多大,那麼數組很可能是其中的關鍵。

如果您正打算成為一名 Java 開發人員,請把您的頭包起來圍繞這些抽象概念似乎有點令人頭疼。不過不要擔心,因為它們無疑是 Java 編程的基礎部分,掌握它們將使您成為一個更好的程序員。更不用說它們真的沒有那麼難理解。

到本文結束時,您將對數組有紮實的理解,並在精通 Java 的道路上走得很好。讓我們首先了解編程中數組的概念。

數組到底是什麼?

數組是所有相同類型的數據項的集合,存儲在單個變量名下的連續內存塊。可以把它想像成一個容器,可以容納多個相同類型的值,例如整數、字符串,甚至其他對象。

數組中的每個值都被分配了一個唯一的索引或鍵,用於訪問和操作該值。該鍵允許程序員輕鬆訪問數組中的特定值,而無需搜索整個集合。

在 Java 中最基本的形式中,數組存儲相同數據類型的多個值,數組中的元素使用索引(鍵)訪問。

索引數組中的第一個元素始終為 0,最後一個元素的索引始終為數組的長度減一。數組可以是一維或多維的,它們可以保存原始數據類型或對象。

如何在 Java 中聲明/初始化數組

要聲明數組,您必須首先指定將存儲在數組中的元素的數據類型。例如,要聲明一個整數數組,您可以使用以下語法:

int[] numbers;

這聲明了一個名為“numbers”的整數數組。但是,要初始化或實例化數組,您必須指定它將包含的元素的類型和數量:

numbers=new int[5];

這將初始化“numbers”數組來保存五個整數值。如果元素已知,您還可以使用以下語法使用值初始化數組:

int[] numbers={1, 2, 3, 4, 5};

This使用值 1、2、3、4 和 5 初始化“數字”數組。您還可以使用循環來初始化數組:

int[] numbers=new int[5];
for (int i=0; i numbers.length; i++) {
numbers[i]=i + 1;
}

這會用值初始化“numbers”數組1、2、3、4 和 5。請注意,此初始化方法的時間複雜度為 O(n)。

訪問和操作數組元素

Java 中的數組允許您使用索引訪問和操作元素。索引從 0 開始,這意味著數組中的第一個元素的索引為 0,第二個元素的索引為 1,依此類推。

要訪問數組中的元素,您可以使用方括號表示法來指定索引。例如,如果你有一個名為“numbers”的整數數組,你想訪問數組中的第三個元素,你可以寫“numbers[2]”。這是因為索引從 0 開始,所以第三個元素的索引為 2。

您還可以使用索引操作數組元素。比如說,您想通過使用方括號表示法為其分配新值來更改元素的值。使用我們之前的示例:

numbers[2]=10;
System.out.println(numbers[2]);//輸出:10

我們首先使用方括號表示法將值 10 賦給數組中的第三個元素。然後,我們打印出第三個元素的值,以確認它已更改為 10。

另一種常見的數組操作技術是排序。您可以使用“Arrays.sort()”方法在 Java 中對數組進行排序。這是一個例子:

int[] numbers={5, 1, 3, 2, 4};
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers));//輸出:[1, 2, 3, 4, 5]

在這裡,我們有一個名為“numbers”的整數數組,其中包含未排序的值。我們使用“Arrays.sort()”方法對元素進行升序排序。然後,我們使用“Arrays.toString()”方法打印出排序後的數組。

多維數組

到目前為止,我們已經討論了一維數組,它們是只有一行元素的數組。但是,Java 也支持多維數組,即具有多行和多列元素的數組。多維數組對於以表格格式存儲和操作數據很有用。

要在 Java 中聲明多維數組,您必須指定它將具有的行數和列數,以及它將保存的元素的數據類型。例如,要聲明一個兩行三列的二維整數數組,您可以使用以下語法:

int[][] matrix=new int[2][3];

這將初始化一個稱為“矩陣”的二維數組,該數組具有兩行三列,每列包含整數值。您還可以使用嵌套花括號的值初始化多維數組。考慮以下內容:

int[][] matrix={{1, 2, 3}, {4, 5, 6}};

這會初始化一個二維數組稱為具有兩行三列的“矩陣”,每列包含整數值。第一行包含值 1、2 和 3,而第二行包含值 4、5 和 6。

要訪問多維數組中的元素,必須使用其行和列索引。例如,要訪問“矩陣”數組第一行第二列中的元素,您可以編寫“矩陣[0][1]”。這是因為行索引為 0(第一行),列索引為 1(第二列)。

Arrays vs ArrayLists in Java

Arrays 和 ArrayLists 有一些相似之處,但它們也有一些顯著差異,這些差異會影響您何時以及如何使用它們。讓我們深入研究兩者之間的比較。

簡單地說,ArrayList 是一個可調整大小的數組,可以在運行時動態更改其大小。這與傳統數組不同,傳統數組的長度一旦創建就無法更改。

現在,讓我們看一下如何初始化 ArrayList:

ArrayList 數字=new ArrayList>();

這會初始化一個空的 ArrayList。我們可以使用 add() 方法向 ArrayList 添加元素:

numbers.add(1);
numbers.add(2);
numbers.add(3);

我們也可以使用 remove() 方法從 ArrayList 中移除元素:

numbers.remove(2);

在這個例子中,我們移除元素在索引 2 處,即數字 3。在此操作之後,ArrayList 將包含元素 1 和 2。

使用 ArrayList 的最重要的好處之一是它們的靈活性。因為它們可以根據需要增大和縮小大小,所以在處理大量數據時它們可能是更有效的選擇。相比之下,數組的限制可能更多,因為您必須預先聲明數組的大小。

數組和 ArrayList 之間的另一個主要區別是它們在 Java 中的實現方式。數組是一種基本數據類型,這意味著它們內置於語言本身。另一方面,ArrayList 是 Java 集合的一部分框架,它提供了範圍廣泛的強大數據結構和算法來管理對象集合。

數組與數組列表:優點和缺點

由於這些差異,每個數據結構有其自身的優點和缺點。以下是決定是使用數組還是 ArrayList 時的一些主要考慮因素。

使用數組的好處

對於少量數據快速高效內存效率高,因為它們不需要開銷ArrayList 對象的編譯時安全性,因為數組的類型和大小可以預先指定

使用數組的缺點

固定大小,意味著您可能需要分配比必要更多的內存,或者如果數組的大小變化在處理大量數據時可能難以處理無法調整大小,這意味著如果需要更改大小,您需要創建一個新數組並複制元素

使用數組列表的好處

動態大小,允許它們根據需要增長或縮小 對管理大量數據非常有效 可以使用內置方法輕鬆排序或搜索

使用數組列表的缺點

需要比傳統數組更多的內存,因為它們需要存儲額外的信息以確保運行時安全,因為存儲在 ArrayList 中的對像類型只能在運行時檢查 對於少量數據,效率低於數組

因此,如果您處理的是少量數據數據和性能至關重要,陣列可能是更好的選擇。但是,如果您需要管理大量數據或需要動態調整大小,那麼 ArrayList 可能是更好的選擇。

Java 中的“關聯數組”-地圖

Java 可以不支持關聯數組,但通過 Map 數據結構實現類似的東西。映射與關聯數組一樣,是鍵值對的集合,其中每個鍵映射到相應的值。

當您需要根據特定鍵查找值時,映射非常有用,並且可以使用 Java 中的幾個不同類來實現。讓我們看一下如何使用 HashMap 類初始化映射:

HashMap phoneBook=new HashMap>();

這會初始化一個空的 HashMap,其鍵類型為 String 和整數類型的值。我們可以使用 put() 方法向地圖添加元素:

phoneBook.put(“John”, 1234567890);
phoneBook.put(“Jane”, 2345678901);

這裡,“John”和“Jane”是鍵,1234567890和2345678901是對應的值。我們還可以使用其鍵訪問映射中的值:

int johnsPhoneNumber=phoneBook.get(“John”);

此處,johnsPhoneNumber 將被分配值 1234567890。

使用映射的優點

在數組或 ArrayList 上使用映射的一個優點是鍵不必是整數。這意味著您可以使用任何對像作為鍵,只要它正確地實現了 equals() 和 hashCode() 方法。這允許您為更複雜的數據結構創建自定義鍵值對。

地圖還允許基於鍵的快速查找。由於鍵在映射中是唯一的,因此您可以快速檢索與特定鍵關聯的值,而無需遍歷整個數據結構。這在處理大型數據集(其中快速訪問特定值很重要)時特別有用。

地圖的另一個優點是它們可用於在某些情況下簡化代碼。例如,假設我們有一個計算文本文件中單詞出現頻率的算法:

Map wordCounts=new HashMap>();
//read in text file
for (字符串詞:textFile) {
if (wordCounts.containsKey(word)) {
int count=wordCounts.get(word);
wordCounts.put(word, count + 1);
} else {
wordCounts.put(word, 1);

}

在這裡,我們使用關聯數組來跟踪文本中每個單詞的頻率文件。如果單詞已經在關聯數組中,我們使用 get() 方法檢索它的當前計數,增加計數,然後將更新後的計數放回關聯數組。如果單詞還不在關聯數組中,我們將其添加到計數 1 中。

簡而言之,映射簡化了代碼並允許根據對應的鍵高效地查找值。如果您發現自己在處理大型數據集時經常需要根據鍵查找值,則地圖可以讓您省去大量跑腿工作。

底線

數組是 Java 中的一種重要數據結構,掌握它們將大大有助於實現其在 Java 中的真正威力。它們用途廣泛,允許您創建可以保存原始數據類型或對象的一維和多維數組。

對於數組,您可以使用索引訪問元素,並通過排序等操作輕鬆地操縱它們。因此,如果您正在學習 Java 並希望將您的編程能力提升到一個新的水平,那麼數組是讓您達到目標的可靠方法。

Java 中的數組解釋示例常見問題解答(常見問題解答)

在 Java 中如何求數組的長度?

在 Java 中求數組的長度,可以使用 length 屬性。例如,如果您有一個名為“myArray”的數組,您可以使用以下語法找到它的長度:“int length=myArray.length;”。這將為您提供數組中元素的數量。

您可以在 Java 中擁有一個同時具有原始數據類型和對象的數組嗎?

是的,在 Java 中,您可以擁有一個既包含原始數據類型又包含對象的數組。這稱為混合數組。

例如,您可以通過將其聲明為“Object[] mixedArray={1, 2, “hello”};”來創建一個包含整數和字符串的數組。

但是,通常不建議使用混合數組,因為它們很難使用並且會導致類型錯誤。

如何將數組轉換為Java 中的列表?

要將數組轉換為 Java 中的列表,可以使用 Arrays.asList() 方法。例如,如果您有一個名為“myArray”的數組,您可以使用以下語法將其轉換為列表:“List

Java 中的數組和 ArrayList 有什麼區別?

Java 中數組和 ArrayList 的主要區別在於,數組的長度是固定的,一旦初始化就不能更改,而 ArrayList 是可調整大小的,可以動態更改其大小在運行時。此外,數組只能包含單一數據類型的元素,而 ArrayList 可以包含任何數據類型的元素。

數組初始化後能否更改其大小?

不可以,數組一旦初始化就不能改變它的大小。數組的長度是固定的,在創建時就確定了。

如果需要在數組中添加或刪除元素,則需要創建一個具有所需大小的新數組,然後從數組中復制元素舊數組到新數組。 A

或者,您可以使用可調整大小並可在運行時動態更改其大小的 ArrayList。

By Maxwell Gaven

我在 IT 行業工作了 7 年。 觀察 IT 行業的不斷變化很有趣。 IT 是我的工作、愛好和生活。