跳转至

Java 中 ArrayList 长度相关知识详解

简介

在 Java 编程里,ArrayList 是一个极为常用的动态数组实现类,它属于 java.util 包。和普通数组不同,ArrayList 能动态地调整大小。然而,很多开发者会将其与普通数组的 length 属性混淆。本文会深入讲解 ArrayList 长度的基础概念、使用方法、常见实践以及最佳实践,助力读者更好地理解和运用 ArrayList

目录

  1. 基础概念
  2. 使用方法
  3. 常见实践
  4. 最佳实践
  5. 小结
  6. 参考资料

1. 基础概念

普通数组的 length

在 Java 中,普通数组有一个 length 属性,它代表数组的固定大小。这个大小在数组创建时就已确定,之后无法改变。示例如下:

int[] array = new int[5];
System.out.println(array.length); // 输出 5

ArrayList 的大小

ArrayList 是一个动态数组,它没有 length 属性。取而代之的是 size() 方法,该方法返回 ArrayList 中当前元素的数量。ArrayList 能根据需要自动调整大小,添加或删除元素时,其大小会相应改变。示例如下:

import java.util.ArrayList;

public class ArrayListSizeExample {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("apple");
        list.add("banana");
        System.out.println(list.size()); // 输出 2
    }
}

2. 使用方法

获取 ArrayList 的大小

使用 size() 方法可以获取 ArrayList 中当前元素的数量。示例如下:

import java.util.ArrayList;

public class GetArrayListSize {
    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        int size = numbers.size();
        System.out.println("ArrayList 的大小是: " + size);
    }
}

遍历 ArrayList

可结合 size() 方法和 for 循环来遍历 ArrayList 中的元素。示例如下:

import java.util.ArrayList;

public class TraverseArrayList {
    public static void main(String[] args) {
        ArrayList<String> fruits = new ArrayList<>();
        fruits.add("apple");
        fruits.add("banana");
        fruits.add("cherry");

        for (int i = 0; i < fruits.size(); i++) {
            System.out.println(fruits.get(i));
        }
    }
}

3. 常见实践

检查 ArrayList 是否为空

可以使用 size() 方法来检查 ArrayList 是否为空。若 size() 返回 0,则表示 ArrayList 为空。示例如下:

import java.util.ArrayList;

public class CheckEmptyArrayList {
    public static void main(String[] args) {
        ArrayList<Double> prices = new ArrayList<>();
        if (prices.size() == 0) {
            System.out.println("ArrayList 为空");
        } else {
            System.out.println("ArrayList 不为空");
        }
    }
}

根据 ArrayList 大小进行条件判断

有时候,需要根据 ArrayList 的大小来执行不同的操作。示例如下:

import java.util.ArrayList;

public class ConditionalOperation {
    public static void main(String[] args) {
        ArrayList<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");

        if (names.size() < 3) {
            System.out.println("ArrayList 中的元素少于 3 个");
        } else {
            System.out.println("ArrayList 中的元素不少于 3 个");
        }
    }
}

4. 最佳实践

避免在循环中多次调用 size() 方法

在循环中多次调用 size() 方法会增加不必要的开销。建议在循环前将 size() 方法的返回值存储在一个变量中。示例如下:

import java.util.ArrayList;

public class OptimalTraversal {
    public static void main(String[] args) {
        ArrayList<Integer> scores = new ArrayList<>();
        scores.add(80);
        scores.add(90);
        scores.add(70);

        int size = scores.size();
        for (int i = 0; i < size; i++) {
            System.out.println(scores.get(i));
        }
    }
}

使用增强 for 循环(for-each 循环)

当不需要访问元素的索引时,使用增强 for 循环可以使代码更简洁。示例如下:

import java.util.ArrayList;

public class ForEachLoop {
    public static void main(String[] args) {
        ArrayList<String> colors = new ArrayList<>();
        colors.add("red");
        colors.add("green");
        colors.add("blue");

        for (String color : colors) {
            System.out.println(color);
        }
    }
}

小结

本文详细介绍了 Java 中 ArrayList 长度的相关知识。ArrayList 没有 length 属性,而是使用 size() 方法来获取当前元素的数量。我们讲解了 size() 方法的使用方法、常见实践以及最佳实践。在实际开发中,要正确使用 size() 方法,避免不必要的性能开销,以提高代码的效率和可读性。

参考资料

  • 《Effective Java》(第三版)