Java List需要知道对象类型才能运行

简介

在Java编程中,List是一种常用的数据结构,用于存储一组对象。然而,List在运行时需要知道对象的类型,以便正确地进行操作。本文将详细介绍Java List的特性,并通过代码示例展示其使用方法。

List的概述

List是Java集合框架中的一种接口,它继承自Collection接口,并扩展了一些特有的方法。List可以按照元素的插入顺序进行存储,并且允许存储重复元素。

List的常用实现类

Java提供了多种List的实现类,包括ArrayList、LinkedList和Vector等。这些实现类在内部使用不同的数据结构来存储元素,并提供了各种操作方法。

ArrayList

ArrayList是基于数组实现的List,它可以动态地扩展和收缩。由于基于数组的实现,ArrayList在随机访问元素时具有较好的性能。

List<String> arrayList = new ArrayList<>();
arrayList.add("apple");
arrayList.add("banana");
arrayList.add("orange");

System.out.println(arrayList.get(1)); // 输出:banana

LinkedList

LinkedList是基于双向链表实现的List,它可以快速地在列表任意位置插入或删除元素。由于链表的特性,LinkedList在随机访问元素时性能较差,但在插入和删除元素时效率较高。

List<String> linkedList = new LinkedList<>();
linkedList.add("apple");
linkedList.add("banana");
linkedList.add("orange");

System.out.println(linkedList.get(2)); // 输出:orange

Vector

Vector是一个线程安全的List实现类,它和ArrayList类似,但在性能上稍逊一筹。由于线程安全的特性,Vector适用于多线程环境。

List<String> vector = new Vector<>();
vector.add("apple");
vector.add("banana");
vector.add("orange");

System.out.println(vector.get(0)); // 输出:apple

List的类型参数

List是一个泛型接口,可以指定存储元素的类型。在使用List时,需要在声明时指定类型参数,这样List就知道存储的是什么类型的对象。

List<String> fruits = new ArrayList<>();
fruits.add("apple");
fruits.add("banana");
fruits.add("orange");

System.out.println(fruits.get(1)); // 输出:banana

由于指定了类型参数为String,List内部会对存储的元素进行类型检查,确保只有String类型的对象可以被添加到列表中。

List的常用操作

List提供了一系列常用的操作方法,可以通过这些方法对列表进行增删改查等操作。

添加元素

可以使用add方法向列表末尾添加元素,也可以使用add(index, element)方法在指定位置插入元素。

List<String> fruits = new ArrayList<>();
fruits.add("apple");
fruits.add("banana");
fruits.add("orange");

System.out.println(fruits); // 输出:[apple, banana, orange]

fruits.add(1, "pear");
System.out.println(fruits); // 输出:[apple, pear, banana, orange]

删除元素

可以使用remove(index)方法删除指定位置的元素,也可以使用remove(element)方法删除指定的元素。

List<String> fruits = new ArrayList<>();
fruits.add("apple");
fruits.add("banana");
fruits.add("orange");

System.out.println(fruits); // 输出:[apple, banana, orange]

fruits.remove(1);
System.out.println(fruits); // 输出:[apple, orange]

fruits.remove("apple");
System.out.println(fruits); // 输出:[orange]

修改元素

可以使用set方法修改指定位置的元素。

List<String> fruits = new ArrayList<>();
fruits.add("apple");
fruits.add("banana");
fruits.add("orange");

System.out.println(fruits); // 输出:[apple, banana, orange]

fruits.set(1, "pear");
System.out.println(fruits); // 输出:[apple, pear, orange]

查询元素

可以使用get方法获取指定位置的元素,也可以使用indexOf方法获取指定元素的位置。

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