Java泛型数组ArrayList使用简明教程

Java泛型数组ArrayList(类似C++的vector)

在Java中,ArrayListjava.util包中提供的一个常用的动态数组实现,它实现了List接口。下面是ArrayList的一些常见用法和示例:

创建 ArrayList

import java.util.ArrayList;
import java.util.List;

public class ArrayListExample {
    public static void main(String[] args) {
        // 创建一个空的 ArrayList
        List<String> arrayList = new ArrayList<>();

        // 创建带有初始容量的 ArrayList
        List<Integer> intList = new ArrayList<>(10);
    }
}

添加元素

List<String> fruits = new ArrayList<>();

// 添加单个元素
fruits.add("Apple");
fruits.add("Banana");

// 添加一组元素
List<String> moreFruits = Arrays.asList("Orange", "Grapes", "Mango");
fruits.addAll(moreFruits);

获取元素

String firstFruit = fruits.get(0);
System.out.println("First fruit: " + firstFruit);

遍历 ArrayList

for (String fruit : fruits) {
    System.out.println(fruit);
}

// 使用迭代器遍历
Iterator<String> iterator = fruits.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

删除元素

fruits.remove("Banana");

判断元素是否存在

boolean containsApple = fruits.contains("Apple");
System.out.println("Contains Apple? " + containsApple);

获取 ArrayList 大小

int size = fruits.size();
System.out.println("Size of ArrayList: " + size);

转换为数组

String[] fruitArray = new String[fruits.size()];
fruits.toArray(fruitArray);

清空 ArrayList

fruits.clear();

检查 ArrayList 是否为空

boolean isEmpty = fruits.isEmpty();
System.out.println("Is ArrayList empty? " + isEmpty);

替换元素

fruits.set(0, "NewApple");

截取部分元素

List<String> subList = fruits.subList(1, 3);

访问元素通过索引

List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(20);
numbers.add(30);

// 访问第一个元素
int firstNumber = numbers.get(0);
System.out.println("First number: " + firstNumber);

// 访问最后一个元素
int lastNumber = numbers.get(numbers.size() - 1);
System.out.println("Last number: " + lastNumber);

设置元素通过索引

// 设置第一个元素
numbers.set(0, 100);

// 设置最后一个元素
numbers.set(numbers.size() - 1, 300);

遍历并修改元素

List<Integer> scores = new ArrayList<>(Arrays.asList(90, 85, 88, 92));

for (int i = 0; i < scores.size(); i++) {
    int currentScore = scores.get(i);
    // 在遍历过程中修改元素
    scores.set(i, currentScore + 5);
}

在特定位置插入元素

// 在第二个位置插入元素
numbers.add(1, 50);

删除特定位置的元素

// 删除第三个位置的元素
numbers.remove(2);

判断索引是否有效

int indexToCheck = 5;

if (indexToCheck >= 0 && indexToCheck < numbers.size()) {
    int valueAtIndex = numbers.get(indexToCheck);
    System.out.println("Value at index " + indexToCheck + ": " + valueAtIndex);
} else {
    System.out.println("Invalid index");
}

使用迭代器更新元素

Iterator<Integer> iterator = numbers.iterator();
while (iterator.hasNext()) {
    int currentValue = iterator.next();
    // 在迭代器中更新元素
    iterator.set(currentValue * 2);
}

设置或预估其容量

// 创建一个ArrayList
ArrayList<String> arrayList = new ArrayList<>();
// 预估容量为20
arrayList.ensureCapacity(20);

在这个例子中,ensureCapacity(20) 方法告诉ArrayList预估容量为20,然后我们可以添加元素到ArrayList。这可以提高性能,因为它避免了在每次添加元素时都进行数组的重新分配。不过,预估容量的方法并不会实际地更改列表的大小,它只是预先分配内存以便后续的添加操作,以减少动态扩展的开销。

这些是ArrayList的一些基本用法。需要注意的是,ArrayList是基于动态数组实现的,它会自动调整大小。

你可能感兴趣的:(java)