API学习ArrayList

来源:互联网 发布:avsow永久域名 编辑:程序博客网 时间:2024/06/07 03:49

“`
package com.wonders.week01.collection;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/**
* ArrayList类
* (1)java.lang.util包下的一个工具类
* (2)该类的继承层次:ArrayList extends AbstractList,
* AbstractList extends AbstractCollection,
* AbstractCollection extends Object
* (3)不是线程安全的集合
* @author liyongyong
*
*/
public class ArrayListTest {

/** * (1)ArrayList是一个实现了List接口的可以自动调整大小的特殊数组。 * 实现了所有可选择的List的操作,容纳所有的数据元素,包括null值。 * 此外还实现了List接口,而且该类还提供了操作数组的大小的方法,可以被用来在内部存储集合元素。 * 这个类大体上和Vector类是类似的,只是ArrayList是非同步的一个类。 * size, isEmpty, get, set, iterator,和listIterator这些操作都是常量时间运行, * 添加n个元素到集合中需要的算法时间复杂度是O(n)。一般来说所有的其他的方法都是以线性时间在运行。 * 与LinkedList 的实现相比较,ArrayList的常量因素是比较低的。 * (2)每个ArrayList的实例都有自己的一个容量,这个容量就是在集合中数组用来存储元素的大小。 * 它总是至少和集合的大小保持一致。当元素添加到ArrayList中的时候,它的容量会自动增长。 * 容量自动增长策略的细节没有详细的说明,事实上添加一个元素是有恒定的时间成本消耗。 * (3)再向一个ArrayList中添加大量的元素的时候,这个应用可以进行自身扩容,通过使用ensureCapacity * 方法,这个或许可以减少增加元素的再次分配。 */public static void main(String[] args) {    List<Integer> list = new ArrayList<Integer>();    ArrayList<Integer> arrayList = new ArrayList<Integer>();    list.add(1);    list.add(2);    list.add(3);    list.add(4);    list.add(5);    //返回集合元素有多少个    int size = list.size();    System.out.println("该集合有 " + size + "个元素");    //在指定的位置插入一个元素    list.add(0, 9);    System.out.println("此时集合的元素有 " + list.size() + "个");    //向arrayList中添加元素    arrayList.add(6);    arrayList.add(7);    arrayList.add(8);    System.out.println("arrayList集合中有" + arrayList.size() + "个元素");    //向集合list中添加集合arrayList集合中的所有元素    list.addAll(arrayList);    System.out.println("添加arrayList集合元素以后的list集合大小是 : " + list.size());    //把arrayList集合进行复制,返回一个Object类型的对象    Object object = arrayList.clone();    if (object.equals(arrayList)) {        System.out.println("object和arrayList是同一个对象");    }else{        System.out.println("object和arrayList不是同一个对象");    }    //在指定位置添加某个集合的所有元素    list.addAll(3, arrayList);    System.out.println("此时的集合大小 :" + list.size());    boolean flag = arrayList.contains(1);    boolean flag1 = arrayList.contains(6);    boolean flag2 = list.containsAll(arrayList);    System.out.println(flag + "如果结果为true,说明arrayList中包含元素1");    System.out.println(flag1 + "如果结果为true,说明arrayList中包含元素6");    System.out.println(flag2 + "如果结果为true,说明list集合中包含arrayList");    Integer num = list.get(0);    System.out.println("在list中索引为0的元素是 "+num);    //遍历list集合,并且在控制台循环输出list的元素    for (Integer integer : list) {        System.out.print(integer + "=====");    }    System.out.println();    int index = list.indexOf(7);    System.out.println("元素7在集合list中第一次出现的位置索引是 : " + index);    int index2 = list.indexOf(-9);    System.out.println("元素-9在集合list中第一次出现的位置索引是: " + index2);    boolean empty = list.isEmpty();    System.out.println("list是否为空集合:" + empty);    //清空集合中的所有元素    arrayList.clear();    boolean arrayListEmpty = arrayList.isEmpty();    System.out.println("arrayList中是否含有元素 : " + arrayListEmpty);    //以适当的顺序返回该列表中的元素的迭代器    Iterator<Integer> iterator = list.iterator();    //使用iterator来遍历集合    while (iterator.hasNext()) {        System.out.print(iterator.next()+"----");    }    System.out.println();    //用来获取元素在集合中最后一次出现的位置索引    int lastIndex = list.lastIndexOf(7);    System.out.println("元素7在集合中出现的最后一次的位置索引是:" + lastIndex);    //返回一个集合中的集合元素的迭代    ListIterator<Integer> listIterator = list.listIterator();    while (listIterator.hasNext()) {        Integer integer = (Integer) listIterator.next();        System.out.print(integer + "@");    }    System.out.println();    //从指定位置开始,获取集合中的剩余元素迭代的一个子集合    ListIterator<Integer> lIterator =  list.listIterator(7);    while (lIterator.hasNext()) {        Integer integer = (Integer) lIterator.next();        System.out.print(integer + "   ");    }    System.out.println();    //移除集合中的所有元素    lIterator.remove();    while (lIterator.hasNext()) {        Integer integer = (Integer) lIterator.next();        System.out.println("-----------------------");        System.out.println(integer);    }    boolean flag3 = list.remove(Integer.valueOf(7));    System.out.println("是否从list集合中移除元素7  " + flag3);    boolean removeFlag = list.removeAll(arrayList);    System.out.println("是否从list集合中将arrayList集合中的元素全部移除 : " + removeFlag);    for (Integer integer : list) {        System.out.print(integer + "    ");    }    System.out.println();    //用新的元素值替换指定位置的元素值    list.set(list.size()-1, 99);    for (Integer integer : list) {        System.out.print(integer + "=====");    }    System.out.println();    //获取当前集合的一个子集合,子集合的元素是从指定位置开始截取到指定位置结束    List<Integer> list2 = list.subList(2, list.size()-1);    for (Integer integer : list2) {        System.out.print(integer + " ");        }    System.out.println();    Object[] arr = list2.toArray();    for (int i = 0; i < arr.length; i++) {        System.out.print( arr[i] + "xxx");    }}

}

“`这里写图片描述