1. 程式人生 > >Java中取得陣列(array),集合(Collection)和字串(String)的長度

Java中取得陣列(array),集合(Collection)和字串(String)的長度

在使用Java程式設計時,我們經常需要取得陣列,集合或者字串的長度來作為迴圈或其他操作的條件。為了便於複習,在此總結一下取得他們長度的方法,以免混淆。
先給結論。
1. 陣列(array)
使用.length來獲取陣列的長度。
2. 集合(Collection)或對映(Map)
使用.size()來獲取集合或對映的大小
3. 字元序列(CharSequence,包括CharBuffer,Segment,String,StringBuffer,StringBuilder)
使用.length()來獲取其長度

詳解:

陣列

Java中的陣列是會攜帶自身的長度的。因此我們可以直接訪問一個數組的.length

成員變數來取得去長度。Java文件有如下說明:

An array is created by an array creation expression (§15.10) or an array initializer (§10.6).
An array creation expression specifies the element type, the number of levels of nested arrays, and the length of the array for at least one of the levels of nesting. The array’s length is available as a final instance variable length

.
An array initializer creates an array and provides initial values for all its components.

從中我們可以得知,length變數是屬於陣列的一個final型別的變數。我們只能通過array.length來取得一個數組的長度而並不能改變這個值,因此在不重新建立一個數組或改變一個數組所引用的物件的情況下,無論我對此陣列做出何種改變,連續取得length變數總會返回同一個值。示例如下:
對於一維陣列,呼叫.length直接返回其長度。

int[] array = new int[]{1,2,3,4
,5}; System.out.println(array.length); //輸出5

對於多維陣列,我們每次只能得到其中某一個維度的長度。同時我們也應該注意,多維陣列的每一行長度並不總是一樣的。

int[][] d2matrix = new int[][]{{1, 2, 3, 4}, {1, 2, 3}, {1, 2}};
System.out.println(d2matrix.length); //輸出3
System.out.println(d2matrix[0].length); //輸出4
System.out.println(d2matrix[2].length); //輸出2

集合(List,Set等)

Java中每一個應用了集合藉口的物件都擁有一個.size()方法來獲取其大小。不像固定長度的陣列,集合物件都是可變長度的,所以我們可以向集合物件中任意新增或者刪除元素。呼叫.size()將返回一個非零值當且僅當我們已經向該集合物件中新增過元素之後。
示例如下:

List<String> listExample = new ArrayList<>();
listExample.add("Java");
System.out.println(listExample.size()); //輸出1

某些型別的集合物件在元素是null或者元素已存在的情況下可能會拒絕向其中新增元素的操作,例如Set不允許新增重複元素。在此種情況下,向該集合物件中新增元素不會導致集合物件的大小改變。
示例如下:

Set<String> uniqueListExample = new HashSet<>();
uniqueListExample.add("Java");
System.out.println(uniqueListExample.size()); //輸出1
uniqueListExample.add("Java");
System.out.println(uniqueListExample.size()); //輸出1

取得多維集合物件(例如List<List<Object>>)的大小的操作和取得多維陣列大小的操作類似。如下所示:

List<List<Integer>> d2CollectionExample = new ArrayList<>(); 
//也可以在括號中制定想要創造的ArrayList的初始大小
List<Integer> row = new ArrayList<>();
row.add(1);
row.add(2);
row.add(3);
d2CollectionExample.add(row);
System.out.println(d2CollectionExample.size()); //輸出1
System.out.println(d2CollectionExample.get(0).size()); //輸出3

更加詳細的Java中多維動態陣列的構造和使用可以看這篇: 如何在Java中構造多維動態陣列以及多維動態陣列的使用
需要注意的是,Map並不屬於Java集合框架(Collection Framework),但是其也擁有.size()方法,呼叫.size()方法返回Map中包含的鍵-值組合(key-value pairs)的數量。

String

字串擁有.length()方法,該方法返回該字串例項中字元的數量。
示例如下:

System.out.println("Java".length()); //輸出4