数组是静态的,数组被初始化后其长度就不能再改变了。ArrayList是可以动态改变大小的,ArrayList的特点在于:
- 动态的增加和减少元素
- 灵活的设置数组的大小。
- 当我们不知道到底有多少个元素的时候,就可使用ArrayList。
构造方法
- public ArrayList() ; 构造初始化为10的空列表
- public ArrayList(Collection<? extends E> c)
构造一个指定元素集合的列表,E只是一个标志,至于具体是什么类型,再构造的时候指定。
补充:ArrayList类只能存放引用类型数据,不支持基本数据类型。
常用方法
增加元素到链表中
- boolean add(Element e)
增加指定元素到链表尾部. - void add(int index, Element e)
增加指定元素到链表指定位置.
从链表中删除元素 - void clear()
从链表中删除所有元素. - E remove(int index)
删除链表中指定位置的元素. - protected void removeRange(int start, int end)
删除链表中从某一个位置开始到某一个位置结束的元素。
获取链表中的元素 - E get(int index)
获取链表中指定位置处的元素. - Object[] toArray()
获取一个数组,数组中所有元素是链表中的元素.(即将链表转换为一个数组)
修改某个元素 - E set(int index, E element)
将链表中指定位置上的元素替换成新元素。
搜索元素 - boolean contains(Object o)
如果链表包含指定元素,返回true. - int indexOf(Object o)
返回元素在链表中第一次出现的位置,如果返回-1,表示链表中没有这个元素。 - int lastIndexOf(Object o)
返回元素在链表中最后一次出现的位置,如果返回-1,表示链表中没有这个元素。
检查链表是否为空 - boolean isEmpty()
返回true表示链表中没有任何元素.
获取链表大小 - int size()
返回链表长度(链表包含元素的个数).
代码实例
public static void ArrayListTest(){
// public ArrayList() 创建一个空的集合
ArrayList<String> arrayList = new ArrayList<>() ;
// 添加元素, public boolean add(E e) 将指定元素添加到此集合的末尾
arrayList.add("你好呀") ;
arrayList.add("helloword") ;
arrayList.add("我爱你中国") ;
// 添加指定位置
arrayList.add(1,"hello") ;
System.out.println(arrayList);
// 删除指定元素: public boolean remove(Object o)
arrayList.remove("helloword") ;
System.out.println(arrayList);
// 删除指定位置的元素: public E remove (int index) 返回被删除的元素
arrayList.remove(1) ;
System.out.println(arrayList);
// 修改指定索引处的元素,public E set(int index, E element)返回被修改的元素
arrayList.set(1,"小贵");
System.out.println(arrayList);
// 获取指定位置的元素
System.out.println(arrayList.get(0));
// 返回集合中的元素的个数
System.out.println(arrayList.size());
// 输出集合
System.out.println(arrayList);
}
集合遍历的三种方式
public static void ArrayListPractice(){
ArrayList<String> arrayList = new ArrayList<>() ;
for(int i = 0 ; i < 4 ; i++){
arrayList.add(i+"hellword") ;
}
System.out.println("方式一:for循环遍历ArrayList");
for(int j = 0 ; j<arrayList.size();j++){
System.out.println(arrayList.get(j));
}
System.out.println("方式二:for each遍历");
for(String arrlist : arrayList){
System.out.println(arrlist);
}
System.out.println("方式三:Iterator迭代器遍历");
Iterator<String> iterator = arrayList.iterator() ;
while(iterator.hasNext()) {// hasNext() 判断是否有下一个元素
System.out.println(iterator.next());// next()放回当前元素,并指向下一个元素.
}
}