Java 存储在列表变量中的ArrayList对象

Java 存储在列表变量中的ArrayList对象,java,interface,javac,Java,Interface,Javac,我刚开始学习java,我试图理解util包中的各种数据结构 /*create an ArrayList object*/ List<String> arrayList = new ArrayList<String>(); 我的问题是,是否使用List类型的对象来存储ArrayList构造函数返回的对象 你可以假设我只需要使用列表接口中指定的方法,比如add()或size() 我已经在我的机器上试过了,但它不起作用 我尝试的完整示例代码如下所示 package arra

我刚开始学习java,我试图理解util包中的各种数据结构

/*create an ArrayList object*/
List<String> arrayList = new ArrayList<String>();
我的问题是,是否使用List类型的对象来存储ArrayList构造函数返回的对象

你可以假设我只需要使用列表接口中指定的方法,比如add()或size()

我已经在我的机器上试过了,但它不起作用

我尝试的完整示例代码如下所示

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));
    }
}
/*create an ArrayList object*/
ArrayList<String> arrayList = new ArrayList<String>();
包数组列表;
导入java.util.ArrayList;
导入java.util.List;
公共类ArrayListExample{
公共静态void main(字符串[]args)
{
/*创建ArrayList对象*/
List arrayList=新建arrayList();
/*
使用将元素添加到Arraylist
布尔add(Object o)方法。它作为一般行为返回true
方法。指定的对象追加在末尾
在ArrayList中。
*/
arrayList.添加(“1”);
arrayList.添加(“2”);
arrayList.添加(“3”);
/*
使用Java ArrayList类的get方法显示ArrayList的元素。
对象get(int-index)在中的指定索引处返回和元素
ArrayList
*/
System.out.println(“获取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()的方法,该方法不在List中

在上述情况下,我能否调用该方法

如果是,这通常意味着基类指针可用于存储派生类对象,因为派生类的方法列表始终是基类方法的超集

我的上述结论正确吗?这听起来很愚蠢,但我对java非常陌生。

List
arrayList表示“此变量只能存储
List
接口的实现”

ArrayList
实现了
List
,因此它可以在那里生存。

List
ArrayList表示“此变量只能存储
列表
接口的实现”


ArrayList
实现了
List
,因此它可以在那里生存。

由于
ArrayList
实现了
List
接口,您应该能够使用声明为
List
的对象,该对象被初始化为
ArrayList
。这是相当普遍的做法。它允许您在不更改代码的情况下切换列表的实现

确保导入列表界面时:

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));
    }
}
包数组列表;
导入java.util.ArrayList;
导入java.util.List;
公共类ArrayListExample{
公共静态void main(字符串[]args)
{
/*创建ArrayList对象*/
List arrayList=新建arrayList();
/*
使用将元素添加到Arraylist
布尔add(Object o)方法。它作为一般行为返回true
方法。指定的对象追加在末尾
在ArrayList中。
*/
arrayList.添加(“1”);
arrayList.添加(“2”);
arrayList.添加(“3”);
/*
使用Java ArrayList类的get方法显示ArrayList的元素。
对象get(int-index)在中的指定索引处返回和元素
ArrayList
*/
System.out.println(“获取ArrayList的元素”);
System.out.println(arrayList.get(0));
System.out.println(arrayList.get(1));
System.out.println(arrayList.get(2));
}
}

当引用
列表
时,您将无法使用
微调大小
功能,因为它不在
列表

的接口上,因为
数组列表
实现了
列表
接口,您应该能够使用声明为初始化为
ArrayList
。这是相当普遍的做法。它允许您在不更改代码的情况下切换列表的实现

确保导入列表界面时:

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));
    }
}
包数组列表;
导入java.util.ArrayList;
导入java.util.List;
公共类ArrayListExample{
公共静态void main(字符串[]args)
{
/*创建ArrayList对象*/
List arrayList=新建arrayList();
/*
使用将元素添加到Arraylist
布尔add(Object o)方法。它作为一般行为返回true
方法。指定的对象追加在末尾
在ArrayList中。
*/
arrayList.添加(“1”);
arrayList.添加(“2”);
arrayList.添加(“3”);
/*
使用Java ArrayList类的get方法显示ArrayList的元素。
对象get(int-index)在中的指定索引处返回和元素
ArrayList
*/
System.out.println(“获取ArrayList的元素”);
System.out.println(arrayList.get(0));
System.out.println(arrayList.get(1));
System.out.println(arrayList.get(2));
}
}
参考
列表时
您将无法使用
trimToSize
功能,因为它不在
列表

的界面上

class A implements B {  }
在这种情况下,可以将一个类分配给它的一个实现接口类型的变量

C c = new A();
如果在使用c实例时执行此强制转换,则只能访问类c中可用的方法

/*create an ArrayList object*/
ArrayList<String> arrayList = new ArrayList<String>();