ArrayList 详解

ArrayList 详解

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。

ArrayList 是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。

ArrayList 底层是基于数组来实现容量大小动态变化的。

/**
* The size of the ArrayList (the number of elements it contains).
*/
private int size;  // 实际元素个数
transient Object[] elementData;

注意:上面的 size 是指 elementData 中实际有多少个元素,而 elementData.length 为集合容量,表示最多可以容纳多少个元素。

默认初始容量大小为 10;

/**
* Default initial capacity.
*/
private static final int DEFAULT_CAPACITY = 10;

构造函数

无参构造函数

/**
* Constructs an empty list with an initial capacity of ten.
*/
public ArrayList() {
    this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}

注意:注释是说如果我们要构造一个容量大小为 10 的空的 list 集合,我们使用构造函数只是给 elementData 赋值了一个空的数组,其实真正是在第一次添加元素时容量扩大至 10 的。

add(E e) 方法

将指定的元素追加到此列表的末尾

package a;
//使用add()方法向集合里面添值
public class tianzhi {
		public static void main(String[] args) {
		List l=new ArrayList();
		l.add("a");
		l.add(1);
		l.add('b');
		l.add(2.0f);//Float
		l.add(2.00);
		Object e = 3,s=6;
		l.add(e);	
		l.add(s);	
		//“E”为不确定的类型,所以可以输入任意值,如果想向里面添加对象名,则要输入数据类型
   }
}

add(int index, E element)方法*

在此列表中的指定位置插入指定的元素。

public class tianzhi {
		public static void main(String[] args) {
		List l=new ArrayList();
		int e=6;
		l.add(3,e);//前面写下标,后面写要插入集合的内容
		//注意:下标从零开始
		}
	}

clear()

从列表中删除所有元素。

public static void main(String[] args) {
		List l=new ArrayList();
		l.add(66);
		l.add(5);
		for(int i=0;i<l.size();i++) {
			System.out.println(l.get(i));			
		}			
		l.clear();	
		for(int i=0;i<l.size();i++) {
			System.out.println(l.get(i));			
		}
	}

由结果可知在l.clear(); 后是没有输出结果的,也就是集合里面已经没有了元素

contains(Object o)方法

验证集合里面是否有此元素,如果有则返回true

public static void main(String[] args) {
		List l=new ArrayList();
		l.add(66);
		l.add(5);
		for(int i=0;i<l.size();i++) {
			System.out.println(l.get(i));		
		}
		System.out.println(l.contains(66));
	}//返回true

forEach(Consumer<? super E> action)方法

对 Iterable的每个元素执行给定的操作,直到所有元素都被处理或动作引发异常。

 public static void main(String[] args) {
        int i = 0;
        List<Integer> list = new ArrayList<>();
        list.add(++i);
        list.add(++i);
        list.add(++i);
        list.add(++i);
        list.forEach(cc -> System.out.println(cc));
        list.forEach(System.err :: println);
        list.add(++i); 
        Integer[] ints = new Integer[]{};
        ints = list.toArray(ints);
        System.out.println(Arrays.asList(ints));
    }

get(int index) 方法

获得括号里下标所代表的元素
运用代码

public static void main(String[] args) {
		List arrl=new ArrayList();
		arrl.add("张三");
		arrl.add(10);
		arrl.add(3.14);
		//返回集合的长度
		int le=arrl.size();
		//输出值get(index)获取指定下标的值
		System.out.println("第一种方法");
		for(int i=0;i<le;i++) {
			System.out.print(arrl.get(i)+" ");
		}

indexOf(Object o)方法

返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。

public static void main(String[] args) {
		int a=5;
		List l=new ArrayList();
		((ArrayList) l).ensureCapacity(s);
		l.add(66);
		l.add(5);
		l.add(5);
		System.out.println(l.indexOf(5));
		for(int i=0;i<l.size();i++) {
			System.out.println(l.get(i));
		}
	}

isEmpty()方法

如果此列表不包含元素,则返回 true 。
验证集合内是否有元素,使用方法是“.isEmpty() ”。

public static void main(String[] args) { 
	int a=5; 
	List l=new ArrayList(); 
	((ArrayList) l).ensureCapacity(s); 
	l.add(66); 
	l.add(5); 
	l.add(5);
	System.out.println(l.isEmpty()); 
 	for(int i=0;i<l.size();i++) {
  		System.out.println(l.get(i)); 
  	} 
  }

iterator()方法

以正确的顺序返回该列表中的元素的迭代器。

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("a");
        sites.add("b");
        sites.add("c");
        sites.add("d");

        // 获取迭代器
        Iterator<String> it = sites.iterator();

        // 输出集合中的第一个元素
        System.out.println(it.next());
    }
}

listIterator() 方法

返回列表中的列表迭代器(按适当的顺序)。

import typeinfo.pets.*;
import java.util.*;

public class ListIteration {
  public static void main(String[] args) {
    List<Pet> pets = Pets.arrayList(8);
    ListIterator<Pet> it = pets.listIterator();
    while(it.hasNext())
      System.out.print(it.next() + ", " + it.nextIndex() +
        ", " + it.previousIndex() + "; ");
    System.out.println();
    // Backwards:
    while(it.hasPrevious())
      System.out.print(it.previous().id() + " ");
    System.out.println();
    System.out.println(pets);    
    it = pets.listIterator(3);
    while(it.hasNext()) {
      it.next();
      it.set(Pets.randomPet());
    }
    System.out.println(pets);
  }
}

remove(int index)方法

删除指定位置的元素

public static void main(String[] args) {
		int s=5;
		List l=new ArrayList();
		((ArrayList) l).ensureCapacity(s);
		l.add(66);
		l.add(5);
		l.add(5);
		l.remove(0);
		for(int i=0;i<l.size();i++) {
			System.out.println(l.get(i));
		}
	}

removeIf(Predicate<? super E> filter)

删除满足给定谓词的此集合的所有元素。

public static void main(String[] args){
    List<String>list = new ArrayList<String>();
    list.add("a");  //向列表中添加数据
    list.add("b");  //向列表中添加数据
    list.add("c");  //向列表中添加数据
    List<String>list1 = new ArrayList<String>();
    list1.add("a");  //向列表中添加数据
    list1.add("b");  //向列表中添加数据
    boolean ret = list.removeAll(list1);  //从list中移除与list1相同的元素
    Iterator<String>it = list.iterator();  //创建迭代器
    while(it.hasNext()){  //循环遍历迭代器
    System.out.println(it.next());  //输出集合中元素
  }
}

removeRange(int fromIndex, int toIndex) 方法

从这个列表中删除所有索引在 fromIndex (含)和 toIndex之间的元素。

import java.util.*;
public class a extends ArrayList{		
		      public static void main(String[] args) {
		      a arrlist = new a();
		      arrlist.add(10);
		      arrlist.add(12);
		      arrlist.add(31);
		      System.out.println("原list:" + arrlist);
		      arrlist.removeRange(0,2);
		      System.out.println("新list:" + arrlist);
		   }
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值