我是新学java。我想了解util包中的各种数据结构。
/*create an ArrayList object*/
List<String> arrayList = new ArrayList<String>();
在我见过的 ArrayList 类的声明中
public class ArrayList
extends AbstractList
implements List, RandomAccess, Cloneable, Serializable
我的问题是,如果我使用 List<> 类型的对象来存储 ArrayList<> 的构造函数返回的对象
它会起作用吗?你可以假设我只需要使用 List 接口中指定的方法,例如 add() 或 size()。
我已经在我的机器上尝试过了,但它不起作用。我在下面的 java 教程中找到了这个
我尝试的完整示例代码如下。
package arraylist;
import java.util.ArrayList;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args)
{
/*create an ArrayList object*/
List<String> arrayList = new ArrayList<String>();
/*
Add elements to Arraylist using
boolean add(Object o) method. It returns true as a general behavior
of Collection.add method. The specified object is appended at the end
of the ArrayList.
*/
arrayList.add("1");
arrayList.add("2");
arrayList.add("3");
/*
Use get method of Java ArrayList class to display elements of ArrayList.
Object get(int index) returns and element at the specified index in
the ArrayList
*/
System.out.println("Getting elements of ArrayList");
System.out.println(arrayList.get(0));
System.out.println(arrayList.get(1));
System.out.println(arrayList.get(2));
}
}
我忘了导入 List。这就是它不起作用的原因。但是我的下一个问题是我们使用 List 类型的变量来存储 ArrayList 类型的对象。
比较 List 和 ArrayList 的方法 ArrayList 有一个名为 trimToSize() 的方法,它不在列表中。
在上述情况下,我可以调用该方法吗?
如果是,那通常意味着可以使用基类指针来存储派生类对象,因为派生类的方法列表将始终是基类方法的超集?
我的上述结论正确吗?这是我听起来很愚蠢的问题,但我对 java 很陌生。