Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java arraylist和List之间的差异_Java_Arraylist - Fatal编程技术网

Java arraylist和List之间的差异

Java arraylist和List之间的差异,java,arraylist,Java,Arraylist,使用数组列表和列表之间的区别是什么。实际上,当我想用istself实例化列表时,Java抛出了一个异常,事实上我必须用ArrayList来实现它。List是一个接口,ArrayList是一个实现List的类。不能实例化接口。列表是一种称为接口的通用对象类型。列表有多种类型,包括但不限于ArrayList和LinkedList。列表接口提供了一组方法的句柄,这些方法是在不知道列表类型的情况下操作列表所需的。任何类型的列表都可以指定给列表类型的变量。但列表本身无法实例化,因为它只是一个接口,而不是一

使用数组列表和列表之间的区别是什么。实际上,当我想用istself实例化列表时,Java抛出了一个异常,事实上我必须用ArrayList来实现它。

List是一个接口,ArrayList是一个实现List的类。不能实例化接口。

列表是一种称为接口的通用对象类型。列表有多种类型,包括但不限于ArrayList和LinkedList。列表接口提供了一组方法的句柄,这些方法是在不知道列表类型的情况下操作列表所需的。任何类型的列表都可以指定给列表类型的变量。但列表本身无法实例化,因为它只是一个接口,而不是一个实现。有关更多信息,请参阅Java列表教程

列表
是一种抽象类型—java
接口
。接口定义在实现
列表的对象上可以找到哪些方法

ArrayList
List
接口的具体实现(它在内部使用数组存储元素,因此得名)

数组列表
是一个
列表
,但
列表
不一定是一个
数组列表
。还有其他实现,例如
LinkedList


请参见

您的代码会引发异常,因为
列表
是抽象的,您无法实例化抽象的内容

列表是一个界面。在这里,您可以定义此类型的行为签名

ArrayList是一个列表,因为
实现了List
ArrayList是一个具体的实现,所以所有方法都由List接口定义

在Java中,显然可以实例化一个接口,生成
匿名类
,但实际上有一个具体的类,它实现了
列表
无名称的契约(这就是匿名名称的原因)

这里有一个例子

List list = new List(){

            @Override
            public boolean add(Object arg0) {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public void add(int arg0, Object arg1) {
                // TODO Auto-generated method stub

            }

            @Override
            public boolean addAll(Collection arg0) {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public boolean addAll(int arg0, Collection arg1) {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public void clear() {
                // TODO Auto-generated method stub

            }

            @Override
            public boolean contains(Object arg0) {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public boolean containsAll(Collection arg0) {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public Object get(int arg0) {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public int indexOf(Object arg0) {
                // TODO Auto-generated method stub
                return 0;
            }

            @Override
            public boolean isEmpty() {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public Iterator iterator() {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public int lastIndexOf(Object arg0) {
                // TODO Auto-generated method stub
                return 0;
            }

            @Override
            public ListIterator listIterator() {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public ListIterator listIterator(int arg0) {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public boolean remove(Object arg0) {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public Object remove(int arg0) {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public boolean removeAll(Collection arg0) {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public boolean retainAll(Collection arg0) {
                // TODO Auto-generated method stub
                return false;
            }

            @Override
            public Object set(int arg0, Object arg1) {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public int size() {
                // TODO Auto-generated method stub
                return 0;
            }

            @Override
            public List subList(int arg0, int arg1) {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public Object[] toArray() {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public Object[] toArray(Object[] arg0) {
                // TODO Auto-generated method stub
                return null;
            }

        };

正如@Bohemian所说,如果你自己制作列表实现,你必须小心,不要违背这一点,并遵守合同。

和的可能重复。你确定当你自己实例化列表时,会出现异常而不是编译时错误吗,你几乎可以用一个匿名类来实例化一个接口。从技术上讲,匿名类是一个类,但它感觉就像你在实例化一个接口。我将借用liskov替换原理xD@nachokk事实上,这是一个很好的链接,只需输入一个答案,就可以给人一种百科全书式的权威感:)