Collection接口的子接口
子類Vector,ArrayList,LinkedList
1.元素的添加順序和取出順序一致,且可重復
2.每個元素都有其對應的順序索引
方法
- 在index = 1 的位置插入一個對象,list.add(1,list2)
- 獲取指定index位置的元素,Object get(int index)
- 返回obj在集合中首次出現的位置,int indexOf(Object obj)
- 返回最后出現的位置? ? int lastIndexOf( Object obj )
- 移除指定index位置的元素,并返回 Object remove (int index)
- 用ele替換指定index位置的元素 Object set (int index ,Object ele)
- 返回fromIndex 到toIndex位置的子集合, List sublist(int fromIndex, int toIndex)
遍歷方式
1.Iterator
2.增強for循環
3.普通for循環
package chapter;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class noStatue {public static void main(String[] args) {@SuppressWarnings({"all"})List list = new ArrayList();list.add("jack");list.add("wow");//迭代器Iterator iterator = list.iterator();while (iterator.hasNext()) {Object next = iterator.next();System.out.println(next);}//增強forfor (Object o :list) {System.out.println(o);}//普通for循環for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}}
}
ArrayList
- ArrayList可以加入多個null
- 由數組實現數據存儲
- 基本等同于Vector,但ArrayList,執行效率高,線程不安全,多線程不建議使用
- 底層為對象數組
底層結構與源碼分析
p 511
無參構造器,初始容量為0,第一次增加為10,在擴容,則擴容到1.5倍
指定大小的構造器,初始容量為指定,擴容后為1.5倍
Vector
底層也是對象數組,線程同步(安全)