ArrayList 泛型数组列表:Core Java 5.3

菱形语法<>

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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章