菱形語法<>
ArrayList<String> ss = new ArrayList<>(); // 不會報warning
ArrayList<String> ss = new ArrayList(); // 會報warning : unchecked conversion
new 操作符後的ArrayList的<>中不是必須指明泛型的類型,這種情況下稱爲菱形語法。
new ArrayList<>();
可以賦值給一個變量(如上)、作爲某個方法的實參傳遞到方法、或者從某個方法返回,編譯器會檢查變量、參數或方法返回的泛型類型,然後將這個類型放在<>中。
ArrayList :: set
void set (int index , E obj)
// 用obj覆蓋指定位置的原有內容,注意index的值必須在0~size-1之間。
注意,如下代碼會報錯:java.lang.IndexOutOfBoundsException;
ArrayList<String> ss = new ArrayList<>(12);
ss.set(0,"hi");
因爲此時ss.size()==0,列表中還沒有任何元素
ArrayList也提供了在中間插入數據的方法,且會自動將元素後移
ArrayList :: add
boolean add(E obj); // 在列表末尾追加一個元素
void add(int index, E obj); // 在指定位置插入一個元素,此位置及其之後的元素依次向後移動一個位置
因爲插入和刪除需要逐個移動一部分元素,因此效率較低。add(int index, E obj); remove(int index)
方法如果頻繁使用,建議使用鏈表:LinkedList。
ArrayList適用於隨機查詢的場景,效率相對高
ArrayList可以利用來實現不定長度的數組
ArrayList<String> ss = new ArrayList<>();
ss.add("1");
...
String [] sArr = new String[ss.size()];
ss.toArray(sArr);