Java ArrayList示例

时间:2020-02-23 14:37:05  来源:igfitidea点击:

Java ArrayList类是实现列表接口的可调整大小的数组。它允许所有元素,包括null,并实现所有可选的列表操作。可以在ArrayList上运行的大多数操作,如sizeisEmptygetsetiteratorlistirator都是常量时间。然而,add操作的复杂性是O(n)时间。与LinkedList相比,常数因子较低。

ArrayList的优势

  • 动态添加或者删除元素的能力。

  • ArrayList使用数组作为其底层实现,这使得ArrayList类能够更快地访问元素。

  • 灵活性。

  • ArrayList是面向对象的,因此我们可以从中扩展并添加功能(如果需要)。

  • 向ArrayList添加自定义行为是可能的,甚至很容易实现。

ArrayList的局限性

添加一个元素需要时间。

ArrayList在内存中按顺序存储数据,因此如果列表很大,它将需要大量连续的内存块。

ArrayList的初始容量是10,如果我们不指定容量,我们将有性能限制。每次ArrayList达到自己的容量时,数据都会以50%的容量从旧空间复制到新空间。

ArrayList的简单说明

Java中的ArrayList

从上图中,我们可以看到ArrayList中目前有2个元素,可以添加的元素的最大数量(容量)是8个(或者更多)。

ArrayList中的构造函数

ArrayList()–构造一个初始容量为10的空列表。

ArrayList(集合<?extends E>c)–按照集合迭代器返回的顺序构造一个包含指定集合元素的列表。

ArrayList(intinitialcapacity)–构造具有指定初始容量的空列表。

ArrayList类中的方法

boolean add(E E):将指定的元素追加到列表的end

voidadd(intindex,E element):在列表中的指定位置插入指定的元素。

boolean addAll(集合<?extends E>c):按照指定集合的迭代器返回的顺序,将指定集合中的所有元素追加到列表的末尾。

boolean addAll(int索引,集合<?extends E>c):从指定位置开始将集合中的所有元素插入到列表中。

void clear():删除列表中的所有元素。

boolean contains(Object o):如果列表包含指定的元素,则返回true;否则返回false。

void ensureCapacity(intmincapacity):如果需要确保列表可以容纳minimum capacity参数指定的所有元素,则增加列表的容量。

void forEach(消费者<?super E>action):对循环的每个元素执行给定的操作。

intindexof(objecto):如果列表不包含元素,则返回-1. 但是,如果元素出现在列表中,则返回该列表中第一个出现的指定元素的索引。

boolean isEmpty():如果列表不包含元素,则返回true。

Iterator<E>Iterator():按正确的顺序返回列表中元素的迭代器。

intlastindexof(Object o):返回列表中指定元素最后一次出现的索引,如果列表中不存在元素,则返回-1.

boolean remove(Object o):从列表中移除指定的的的第一个匹配项。

布尔removeAll(集合<?>c):从列表中删除指定集合中包含的所有元素

布尔removeIf(谓词<?super E>filter):删除此集合中满足给定谓词的所有元素。

protectedvoidremoverange(intfromIndex,inttoIndex):删除列表中位于fromIndex和toIndex之间的所有元素。(从索引-包含,到索引-独占)

void replaceAll(UnaryOperator<E>operator):将列表中的每个元素替换为对该元素应用运算符的结果。

boolean retainal(集合<?>c):只返回列表中包含在指定集合中的元素。

int size():返回列表的大小。

空排序(比较器<?super E>c):根据Comparator指定的顺序对列表进行排序。

Object[]toArray():返回一个数组,其中包含列表中包含的元素。

有关所有方法的文档,可以访问Oracle官方文档页。

使用add()在ArrayList中添加元素

import java.util.* ;

public class ArrayListEgTwo
{

public static void main ( String[] args)
{
  //Create an ArrayList that consists of Strings
  ArrayList<String> animals = new ArrayList<String>();

  //Capacity starts at 10, but size starts at 0
  System.out.println("initial size: " + animals.size());

  //Populating some of the arraylist
  animals.add("Elephant");
  animals.add("Tiger");
  animals.add("Lion");
  System.out.println("new size: " + animals.size());
}

输出

size: 0
new size: 3

使用remove()删除ArrayList中的元素

import java.util.* ;
public class RemoveExample
{
public static void main ( String[] args)
{
  ArrayList<String> animals = new ArrayList<String>();

  animals.add( "Elephant" );    
  animals.add( "Tiger" );
  animals.add( "Lion" );  

  names.remove(1);

  for ( int i=0; i < animals.size(); i++ )
    System.out.println( i + ": " + animals.elementAt(j) ); 

}
}

输出

0: Elephant
1: Lion

使用isEmpty()检查ArrayList是否有元素

import java.util.* ;

public class isEmptyExample
{
public static void main ( String[] args)
{
  ArrayList<String> animals = new ArrayList<String>();

  System.out.println( "Case 0:" + animals.isEmpty());

  animals.add("Tiger");    
  System.out.println( "Case 1:" + animals.isEmpty() );

  nobby.clear();    
  System.out.println( "Case 2:" + animals.isEmpty() );
}
}

输出

Case 0: true
Case 1: false
Case 2: true

使用indexOf(Object o)在ArrayList中搜索元素

import java.util.* ;
public class IndexOfExample
{
public static void main (String[] args)
{
  ArrayList<String> animals = new ArrayList<String>();

  animals.add("Elephant");     
  animals.add("Tiger");
  animals.add("Lion");   

  System.out.println("Index of 'Elephant': " + animals.indexOf("Elephant" )); 
  System.out.println("Index of 'Lion': " + animals.indexOf("Lion")); 
}
}

输出

Index of 'Elephant': 0
Index of 'Lion': 2

使用Iterator()迭代ArrayList中的元素

import java.util.* ;
public class IteratorExample
{
public static void main ( String[] args)
{
  ArrayList<String> animals = new ArrayList<String>();
  animals.add("Elephant");
  animals.add("Tiger");
  animals.add("Lion");

  //Initializing an iterator
  Iterator<String> iterator = animals.iterator();

  //Using the iterator to visit each element
  while(iterator.hasNext())
    System.out.println(iterator.next());

}
}

输出

Elephant
Tiger
Lion

使用增强的For循环遍历ArrayList中的元素

import java.util.* ;
public class ForLoopExample
{
public static void main ( String[] args)
{
  ArrayList<String> animals = new ArrayList<String>();

  animals.add("Elephant");
  animals.add("Tiger");
  animals.add("Lion");

  for (String animal : animals) 
    System.out.println(animal);
}
}

输出

Elephant
Tiger
Lion

使用size()获取ArrayList的大小

import java.util.* ;
public class ForLoopExample
{
public static void main ( String[] args)
{
  ArrayList<String> animals = new ArrayList<String>();

  animals.add("Elephant");
  animals.add("Tiger");
  animals.add("Lion");

  System.out.println("Size of ArrayList: " + animals.size());
}
}

输出

Size of ArrayList: 3