Java ArrayList类

2018-07-13  本文已影响7人  海人为记

什么是ArrayList

ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了Collection和List接口,可以灵活的设置数组的大小。要注意的是ArrayList并不是线程安全的,因此一般建议在单线程中使用ArrayList。

构造方法

ArrayList提供了三种方式的构造器

存储数据

ArryList提供了五种存储数据的方法

- set(int index, E element)
- add(E e)
- add(int index, E element)
- addAll(Collection<? extends E> c)
- addAll(int index, Collection<?extends E> c)

set(int index, E element)
用指定的元素替换此列表中指定位置的元素
add(E e)
将指定的元素附加到此列表的末尾
add(int index, E element)
将指定元素插入此列表中的指定位置
addAll(Collection<? extends E> c)
将指定集合中的所有元素按指定集合的Iterator返回的顺序附加到此列表的末尾
addAll(int index, Collection<?extends E> c)
将指定集合中的所有元素插入此列表,从指定的位置开始

读取

get(int index)
返回指定位置的元素

删除

remove(int index)
删除此列表中指定位置的元素
remove(Object o)
如果存在,则从该列表中删除指定元素的第一次出现
removeAll(Collection<?> c)
从此列表中删除指定集合中包含的所有元素
clear()
从列表中删除所有元素

调整数组容量

上面讲到ArrayList中存储元素的时候,都会坚持添加的元素是否超出当前长度,并且初始化数组长度,以满足添加数据的需求.
数组扩容通过一个公开的方法public void ensureCapacity(int minCapacity)来实现.在实际添加大量元素前,可以使用该方法手动增加ArrayList实例的容量,以减少递增式再分配的数量.
ensureCapacity(int minCapacity)
如有必要,增加此ArrayList实例的容量,以确保它至少可以容纳由minimum capacity参数指定的元素数

ArrayList的使用

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class ArrayListLean {
    public static void main(String[] args) {
        //使用ArrayList
        ArrayList<String> arrayList = new ArrayList<>();
        //添加元素
        arrayList.add("小红");
        arrayList.add("小明");
        arrayList.add("小兰");
        arrayList.add("小光");
        System.out.println(arrayList);
        //将元素添加到指定的位置上
        arrayList.add(2, "小霞");
        System.out.println(arrayList);
        //判断元素是否在ArayList中
        boolean contain = arrayList.contains("小霞");
        System.out.println(contain);
        //通过角标获取元素
        String string = arrayList.get(2);
        System.out.println(string);
        //通过元素获取角标
        int index = arrayList.indexOf("小霞");
        System.out.println(index);
        //通过角标设置元素
        arrayList.set(1, "小赵");
        System.out.println(arrayList);
        //通过角标移除元素,并返回移除的元素
        String rmString = arrayList.remove(1);
        System.out.println(rmString);
        //ArrayList集合的遍历
        for(int i=0; i < arrayList.size(); i++) {
            System.out.println(arrayList.get(i));
        }
        //使用迭代器进行遍历
        Iterator<String> iterator = arrayList.iterator();
        while(iterator.hasNext()) {
            String str = iterator.next();
            System.out.println(str);
        }
        //使用迭代器ListIterator可以从后往前遍历
        ListIterator<String> listIterator = arrayList.listIterator();
        while(listIterator.hasNext()) {
            String str = listIterator.next();
            System.out.println(str);
        }
        while(listIterator.hasPrevious()) {
            String str = listIterator.previous();
            System.out.println(str);
        }
        //ArrayList嵌套
        ArrayList<ArrayList<String>> house = new ArrayList<>();
        ArrayList<String> hos1 = new ArrayList<String>();
        hos1.add("tom");
        hos1.add("Jerry");
        hos1.add("Hack");
        house.add(hos1);
        
        ArrayList<String> hos2 = new ArrayList<>();
        hos2.add("Mi");
        hos2.add("We");
        hos2.add("TIm");
        hos2.add("QQ");
        house.add(hos2);
        
        ArrayList<String> hos3 = new ArrayList<>();
        hos3.add("Yello");
        hos3.add("Red");
        hos3.add("Blue");
        hos3.add("Black");
        house.add(hos3);
        //ArrayList嵌套的遍历
        Iterator<ArrayList<String>> iterator = house.iterator();
        while(iterator.hasNext()) {
            ArrayList<String> arrList = iterator.next();
            Iterator<String> it = arrList.iterator();
            while(it.hasNext()) {
                String str = it.next();
                System.out.println(str);
            }
        }
    }
}

详细内容请查看官方文档

上一篇 下一篇

猜你喜欢

热点阅读