💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Java `ArrayList`示例 > 原文: [https://javatutorial.net/java-arraylist-example](https://javatutorial.net/java-arraylist-example) Java `ArrayList`类是实现`List`接口的可调整大小的数组。 它允许所有元素(包括`null`),并且实现所有可选列表操作。 可以在`ArrayList`上运行的大多数操作,例如`size`,`isEmpty`,`get`,`set`,`iterator`和`listIterator`都是恒定时间。 但是,`add`操作的复杂度为`O(n)`时间。与[`LinkedList`](https://javatutorial.net/java-linkedlist-example)相比,常数因子低。 ![java-featured-image](https://img.kancloud.cn/05/3e/053ee0bb59842d92359246c98f815e0c_780x330.jpg) ## `ArrayList`的优点 * 动态添加或删除元素的能力。 * `ArrayList`使用数组作为其基础实现,这使`ArrayList`类可以更快地访问元素。 * 灵活性。 * `ArrayList`是面向对象的,因此您可以从中扩展并添加功能(如果需要)。 * 向`ArrayList`添加自定义行为是可能的,甚至很容易实现。 ## `ArrayList`的局限性 * 添加元素需要`O(n)`时间。 * `ArrayList`将数据顺序存储在内存中,因此,如果列表很大,则将需要大量连续的内存块。 * `ArrayList`的初始容量为 10,如果不指定容量,则将受到性能限制。 每当`ArrayList`达到其自身容量时,数据将以 50% 以上的容量从旧空间复制到新空间。 ## `ArrayList`的简单说明 ![ArrayList in Java](https://img.kancloud.cn/4e/16/4e1601cd1c7bb969572a3d1f88a90125_648x219.jpg) Java 中的`ArrayList` 从上图可以看到,`ArrayList`中当前有 2 个元素,可以添加的最大元素数量(容量)为 8(或 6 个以上)。 ## `ArrayList`中的构造方法 1. `ArrayList()` – 构造一个初始容量为 10 的空列表。 2. `ArrayList(Collection <? extended E> c)` – 构造一个列表,该列表包含指定集合的​​元素,并按集合的迭代器返回它们的顺序。 3. `ArrayList(int initialCapacity)` – 构造一个具有指定初始容量的空列表。 ## `ArrayList`类中的方法 1. `boolean add(E e)`:将指定的元素附加到列表的末尾。 2. `void add(int index, E element)`:将指定的元素插入列表中的指定位置。 3. `boolean addAll(Collection <? extends E> c)`:将指定集合中的所有元素附加到列表的末尾,以指定集合的`​​Iterator`返回它们的顺序。 4. `boolean addAll(int index, Collection <? extends E> c)`:从指定位置开始,将集合中的所有元素插入列表。 5. `void clear()`:从列表中删除所有元素。 6. `boolean contains(Object o)`:如果列表包含指定的元素,则返回`true`;否则返回`false`。 7. `void ensureCapacity(int minCapacity)`:如果有必要确保列表可以容纳最小容量参数指定的所有元素,则增加列表的容量。 8. `void forEach(Consumer<? super E> action)`:对已循环通过的每个元素执行给定的动作。 9. `int indexOf(Object o)`:如果列表不包含元素,则返回 -1。 但是,如果元素存在于列表中,则它返回此列表中指定元素首次出现的索引。 10. `boolean isEmpty()`:如果列表不包含任何元素,则返回`true`。 11. `Iterator<E> iterator()`:以适当的顺序返回列表中元素的迭代器。 12. `int lastIndexOf(Object o)`:返回列表中指定元素最后一次出现的索引;如果列表中不存在该元素,则返回 -1。 13. `boolean remove(Object o)`:从列表中删除第一次出现的指定对象。 14. `boolean removeAll(Collection<?> c)`:从列表中删除指定集合中包含的所有元素。 15. `boolean removeIf(Predicate<? super E> filter)`:移除此集合中所有满足给定谓词的元素。 16. `void removeRange(int fromIndex, int toIndex)`:删除列表中`fromIndex`和`toIndex`之间的所有元素。(`fromIndex`–包括在内,`toIndex`–排除在外) 17. `void replaceAll(UnaryOperator<E> operator)`:使用将运算符应用于该元素的结果替换列表中的每个元素。 18. `boolean retainAll(Collection<?> c)`:仅返回指定集合中包含的列表中的元素。 19. `int size()`:返回列表的大小。 20. `void sort(Comparator<? super E> c)`:根据`Comparator`指定的顺序对列表进行排序。 21. `Object[] toArray()`:返回包含列表中包含的元素的数组。 有关所有方法的文档,请访问 [Oracle 官方文档页面](https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html)。 ### 使用`add()`在`ArrayList`中添加元素 ```java 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()); } ``` **输出**: ```java size: 0 new size: 3 ``` ### 使用`remove()`移除`ArrayList`中的元素 ```java 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) ); } } ``` **输出**: ```java 0: Elephant 1: Lion ``` ### 使用`isEmpty()`检查`ArrayList`是否包含元素 ```java 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() ); } } ``` **输出**: ```java Case 0: true Case 1: false Case 2: true ``` ### 使用`indexOf(Object o)`在`ArrayList`中搜索元素 ```java 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")); } } ``` **输出**: ```java Index of 'Elephant': 0 Index of 'Lion': 2 ``` ### 使用`Iterator()`遍历`ArrayList`中的元素 ```java 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()); } } ``` **输出**: ```java Elephant Tiger Lion ``` ### 使用增强的`For`循环遍历`ArrayList`中的元素 ```java 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); } } ``` **输出**: ```java Elephant Tiger Lion ``` ### 使用`size()`获取`ArrayList`的大小 ```java 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()); } } ``` **输出**: ```java Size of ArrayList: 3 ```