首页 > 编程笔记 > Java笔记 阅读:10

Java ArrayList列表类的用法(非常详细,附带实例)

在 Java 中,列表类是最常用的一种集合,通常我们会使用 ArrayList 和 LinkedList 两种列表类。

ArrayList 是使用数组结构来实现的一种列表,数组列表中包含了一个动态数组,它用来保存元素。动态数组的结构看起来与数组很相似,但它的最大优势在于不必关心数组的长度,可以将 ArrayList 看成无限长度的数组。而 LinkedList 不再使用数组作为存储数据的结构,而使用双向链表。

由于这两个类的核心方法相同,唯一不同的地方是存储元素的结构,因此我们以 ArrayList 类为例来讲解列表类的相关操作。

我们可以通过下面三种方式构建 ArrayList 对象:
public ArrayList()
public ArrayList(int initialCapacity)
public ArrayList(Collection<? extends E> c)

下面的实例展示了创建 ArrayList 对象的三种方式:
public class ArrayListTest {
    public static void main(String[] args) {
        ArrayList list1 = new ArrayList();
        ArrayList<Integer> list2 = new ArrayList<Integer>(20);
        ArrayList<String> list3 = new ArrayList<String>();
        list3.add("hello");
        list3.add("java");
        ArrayList<String> list4 = new ArrayList<String>(list3);
        System.out.println(list4);
    }
}
由于 ArrayList 定义了泛型类型,因此我们在创建对象时可以指定一个类型来表示存储在列表中的元素的数据类型,比如 String 或 Integer 类型。当然也可以不指定泛型类型,那么列表中指定的就是默认的 Object 类。

此外,还可以自行指定初始容量的大小,比如指定为 20,但实际上多数情况下没有必要指定,因为 ArrayList 会根据实际情况自动扩展容量。

Java ArrayList添加元素

我们可以通过 add() 方法向 ArrayList 对象中添加元素,操作非常简单。如下面的实例所示,往 list 对象中添加了“中国”“美国”“德国”“英国”和“日本”这 5 个字符串对象。
public class ArrayListTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("中国");
        list.add("美国");
        list.add("德国");
        list.add("英国");
        list.add("日本");
        System.out.println(list);
    }
}
输出结果为:
[中国, 美国, 德国, 英国, 日本]

Java ArrayList访问元素

通过 get() 方法可以获取列表中指定位置的元素,代码如下所示:
public class ArrayListTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("中国");
        list.add("美国");
        list.add("德国");
        list.add("英国");
        list.add("日本");
        System.out.println(list.get(0));
        System.out.println(list.get(3));
    }
}
输出结果为:

中国
英国

最终我们获取了 list 对象的第一个和第四个元素,它们分别为“中国”和“英国”。

Java ArrayList修改元素

当我们想修改元素值时可以使用 set() 方法,它可以修改指定位置的元素。例如:
public class ArrayListTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("中国");
        list.add("美国");
        list.add("德国");
        System.out.println(list);
        list.set(2, "法国");
        System.out.println(list);
    }
}
运行结果为:

[中国, 美国, 德国]
[中国, 美国, 法国]

可以看到输出结果中索引为 2 的元素值已经被改为“法国”。

Java ArrayList删除元素

如果想删除列表中的元素,则可以通过 remove() 方法。例如:
public class ArrayListTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("中国");
        list.add("美国");
        list.add("德国");
        list.add("英国");
        System.out.println(list);
        list.remove(2);
        System.out.println(list);
    }
}
运行结果为:

[中国, 美国, 德国, 英国]
[中国, 美国, 英国]

从输出结果不难看出,可以看到原来索引为 2 的元素已经被删除了。

Java ArrayList获取列表元素个数

通过 size() 方法可以获取列表中包含的所有元素的个数,例如:
public class ArrayListTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("中国");
        list.add("美国");
        list.add("德国");
        list.add("英国");
        list.add("日本");
        System.out.println(list.size());
    }
}
运行结果为:

5

程序中的列表一共有五个元素,所以输出为 5。

Java ArrayList遍历数组列表

我们可以通过多种方式来遍历列表,下面的实例中展示了三种遍历方式:
public class ArrayListTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("中国");
        list.add("美国");
        list.add("德国");
        //第一种遍历方式
        for (int i = 0; i < list.size(); i++)
            System.out.println(list.get(i));
        //第二种遍历方式
        for (String s : list)
            System.out.println(s);
        //第三种遍历方式
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}
前两种我们都很熟悉了,其实都是用 for 语句实现遍历的基本用法,第三种则是通过迭代器+while 语句来实现遍历,Iterator 表示迭代器。

Java ArrayList与LinkedList

虽然 ArrayList 与 LinkedList 在使用上对于我们来说没什么区别,但两者的性质存在差异,体现在如下几点:
两者各有各的优缺点,在实际应用中可以根据场景选择其一。

相关文章