Java數(shù)組不能增長。為了創(chuàng)建一個(gè)可擴(kuò)展的數(shù)組,我們可以使用ArrayList或Vector。
ArrayList和Vector類的工作方式相同,只是Vector類中的方法是同步的,而ArrayList中的方法不同步。
ArrayList類僅適用于對象,不適用于原始數(shù)據(jù)類型。
ArrayList類是一個(gè)通用類,它將其元素的類型作為type參數(shù)。
要使用原始值,請聲明一個(gè)包裝類的ArrayList。例如,使用ArrayList <Integer>來處理int元素。
以下代碼片段說明了ArrayList類的使用:
import java.util.ArrayList; public class Main { public static void main(String[] args) { ArrayList<Integer> ids = new ArrayList<>(); int total = ids.size(); // total will be zero System.out.println("ArrayList size is " + total); System.out.println("ArrayList elements are " + ids); ids.add(new Integer(10)); // Adding an Integer object. ids.add(20); // Autoboxing ids.add(30); // Autoboxing total = ids.size(); // total will be 3 System.out.println("ArrayList size is " + total); System.out.println("ArrayList elements are " + ids); ids.clear(); total = ids.size(); // total will be 0 System.out.println("ArrayList size is " + total); System.out.println("ArrayList elements are " + ids); } }
上面的代碼生成以下結(jié)果。
像數(shù)組一樣,ArrayList使用基于零的索引。 ArrayList的第一個(gè)元素的索引為零。
以下代碼說明了如何使用for循環(huán)遍歷ArrayList的元素。
import java.util.ArrayList; public class Main { public static void main(String[] args) { ArrayList<String> namelist = new ArrayList<String>(); // Add some names namelist.add("A"); namelist.add("B"); namelist.add("C"); // Get the count of names in the list int count = namelist.size(); for (int i = 0; i < count; i++) { String name = namelist.get(i); System.out.println(name); } namelist.remove("A"); count = namelist.size(); for (int i = 0; i < count; i++) { String name = namelist.get(i); System.out.println(name); } } }
上面的代碼生成以下結(jié)果。
ArrayList類有一個(gè)名為toArray()的重載方法:
Object[] toArray( ) <T> T[] toArray(T[ ] a)
第一個(gè)方法返回ArrayList的元素作為Object的數(shù)組。第二種方法將任何類型的數(shù)組作為參數(shù)。
以下代碼顯示了如何將ArrayList轉(zhuǎn)換為數(shù)組。
import java.util.ArrayList; import java.util.Arrays; public class Main { public static void main(String[] args) { ArrayList<String> al = new ArrayList<String>(); al.add("Java"); al.add("SQL"); al.add("Data"); System.out.println("ArrayList:" + al); String[] s1 = new String[al.size()]; String[] s2 = al.toArray(s1); System.out.println("s1 == s2:" + (s1 == s2)); System.out.println("s1:" + Arrays.toString(s1)); System.out.println("s2:" + Arrays.toString(s2)); s1 = new String[1]; s1[0] = "hello"; // Store hello in first element s2 = al.toArray(s1); System.out.println("s1 == s2:" + (s1 == s2)); System.out.println("s1:" + Arrays.toString(s1)); System.out.println("s2:" + Arrays.toString(s2)); } }
上面的代碼生成以下結(jié)果。
更多建議: