Java ArrayList示例
Java ArrayList类是实现列表接口的可调整大小的数组。它允许所有元素,包括null,并实现所有可选的列表操作。可以在ArrayList上运行的大多数操作,如size、isEmpty、get、set、iterator和listirator都是常量时间。然而,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