java集合之ArrayList链表基础

ArrayList可变数组

arrayList继承AbstractList抽象类,实现list接口,底层基于数组实现。可存放null,除了非同步的之外,大致等同Vector。适用快速访问,复制、序列化。

构造函数:

ArrayList() 默认初始容量为10

ArrayList(int initialCapacity) 指定初始容量

增加大量数据之前,先扩容量。

void ensureCapacity(int minCapacity)

size()方法是数组现在实际大小,而非数组容量大小。

ArrayList线程不同步,List list=Collections.synchronizedList(new ArrayList(…));实现同步。

常用方法:

boolean add(Element e)尾部添加元素

void add(int index,Element e)指定位置添加

boolean addAll(int index,Collection<? extends E> c)指定位置添加指定集合所有元素

boolean addAll(Collection<? extends E> c)在尾部添加指定集合所有元素

void clear()清空链表

void ensureCapacity(int minCapacity) 增加链表容量

Object clone() 浅拷贝arraylist实例

remove(int index)删除指定位置元素

protected void removeRange(int start,int end)删除指定范围的元素

get(int index)取指定位置元素

Object[] toArray()链表转换为数组

<T> T[] toArray(T[] a) 链表转换为数组

E set(int index,E element)指定位置替换

contains(Object o)搜索是否包含指定元素

int indexOf(Object o)返回元素在链表中第一次出现的位置,没有则返回-1

int lastIndexOf(Object o)最后一次出现位置,同上

boolean isEmpty()判断链表是否为空

int size()       返回链表长度

示例:

package test;

import java.util.*;

 

public class arrayListTest {

 

    public static void main(String args[]) {

        ArrayList<String> list = new ArrayList<String>();

        LinkedList<String> listLink = new LinkedList<String>();

       

        listLink.add("listLink1");

        listLink.add("listLink2");

        listLink.add("listLink3");

        listLink.add("listLink4");

        listLink.add("listLink5");

       

        list.add("list1");

        list.add("list2");

        list.add(2, "list3");

        list.add("list4");

        list.addAll(listLink);

       

        System.out.println("1-The arraylist contains the following elements: "+ list);

        int pos = list.indexOf("list2");//返回元素在列表中第一次出现的位置

        System.out.println("2-The index of list2 is: " + pos);

        boolean emptyFg = list.isEmpty();

        System.out.println("3-the arraylist is empty or not: " + emptyFg);

        int size = list.size();

        System.out.println("4-The size of the list is: " + size);

        boolean element = list.contains("list5");//判断元素存在与否

        System.out.println("5-the arraylist contains the object list5: "+ element);

        String item = list.get(0);//获取指定位置元素

        System.out.println("6-The item is the index 0 is: " + item);

       

        System.out.println("7-for循环链表");

        for (int i = 0; i < list.size(); i++) {

            System.out.println("8-Index: " + i + " - Item: " + list.get(i));

        }

        System.out.println("9-foreach循环链表");

        for (String str : list) {

            System.out.println("10-元素: " + str);

        }

        System.out.println("11-使用迭代器iterator循环链表");

        for (Iterator<String> it = list.iterator(); it.hasNext();) {

            System.out.println("12-元素 is: " + it.next());

        }

        list.set(1, "位置1set元素");

        System.out.println("13-替换指定位置元素: " + list);

        list.remove(0);

        list.remove("list3");

        System.out.println("14-删除元素后: " + list);

        String[] simpleArray = list.toArray(new String[list.size()]);

        System.out.println("15-链表转换为数组: "+ Arrays.toString(simpleArray));//需要toString方法转换,否则输出的是地址

    }

}

 

list在用迭代器Iterator迭代时,不能修改list中的元素,但是可以用ListIterator这个特有接口进行增删操作。

 

posted @ 2018-08-15 16:05  纵马天涯  阅读(370)  评论(0编辑  收藏  举报