API学习ArrayList

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");
		}
	}

}

```![这里写图片描述](https://img-blog.csdn.net/20170725191607111?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjkzNDMyNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190403123149322.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzQzMjU=,size_16,color_FFFFFF,t_70)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值