>Java >Java베이스 >자바에서 list와 arraylist의 차이점

자바에서 list와 arraylist의 차이점

王林
王林원래의
2019-11-18 13:17:232240검색

자바에서 list와 arraylist의 차이점

Difference:

List는 인터페이스이고 ArrayList는 List 인터페이스의 구현 클래스입니다. ArrayList 클래스는 List 인터페이스를 상속하고 구현합니다.

따라서 List 인터페이스를 생성할 수 없습니다. 즉, 인스턴스 객체를 생성할 수 없지만 다음과 같이 List 인터페이스에 대해 자신을 가리키는 객체 참조와 ArrayList 구현의 인스턴스 객체를 생성할 수 있습니다. class 이는 List 인터페이스를 가리키는 객체 참조 역할을 합니다.

Animals.java
public  abstract class Animals {
    //动物名字
    String name;
    //动物叫声
    public  void shout(){
        System.out.println("叫声----");
    }
}

Dog.java
public class Dog extends Animals {
    //狗类独有的方法
    public void guard(){
        System.out.println("狗独有的看门本领");
    }
}

Test.java
public class Test {

    public static void main(String[] args) throws ClassNotFoundException {
        Animals a1 = new Animals();
        Animals a2 = new Dog();
    }
}

자바에서 list와 arraylist의 차이점

List list;//正确,list = null;
List list = new List();//是错误的用法

List list = new ArrayList();

이 문장은 ArrayList 구현 클래스의 객체를 생성합니다. List 인터페이스로 다시 추적됩니다. 현재는 ArrayList 클래스에 있는 일부 속성과 메서드가 있지만 List 인터페이스에는 더 이상 사용할 수 없으며

ArrayList list=newArrayList();

객체 생성이 유지됩니다. ArrayList의 속성과 메서드 모든 속성과 메서드.

Test.java
public class Test {

    public static void main(String[] args) throws ClassNotFoundException {
        Animals a2 = new Dog();
        a2.shout();
        a2.guard();
    }
}

자바에서 list와 arraylist의 차이점

상위 클래스는 더 이상 상위 클래스에는 표시되지만 하위 클래스에는 표시되지 않는 메서드를 호출할 수 없습니다. 그렇지 않으면 컴파일 오류가 발생합니다.

다음과 같은 경우:

List a=new ArrayList();

그러면 a는 List의 모든 속성과 메서드를 가지며 구현 클래스 ArrayList의 고유한 속성과 메서드는 갖지 않습니다.

List와 ArrayList가 동일한 속성(예: int i)과 동일한 메소드(예: void f())를 갖는 경우

then a.i가 List i에서 호출됩니다. , a.f()는 ArrayList에서 f()를 호출합니다.

문제의 핵심:

를 사용하는 이유 List list = new <code>ArrayList alist = new ArrayList() 대신 ArrayList() 를 사용하시겠습니까? List list = new ArrayList() 而不用 ArrayList alist = new ArrayList()呢?

问题就在于List接口有多个实现类,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类,如:

LinkedList或者Vector等等,这时你只要改变这一行就行了: List list = new LinkedList(); 其它使用了list地方的代码根本不需要改动。

假设你开始用ArrayList alist = new ArrayList()

문제는 List 인터페이스에 여러 구현 클래스가 있다는 것입니다. 이제 ArrayList를 사용하고 있다면 언젠가는 다음과 같은 다른 구현 클래스로 전환해야 할 수도 있습니다.

LinkedList 또는 Vector 등을 사용하는 경우 다음 줄만 변경하면 됩니다: List list = new LinkedList(); 목록이 사용되는 다른 코드는 전혀 변경할 필요가 없습니다.

ArrayList alist = new ArrayList() 사용을 시작했고 이제 몇 가지 변경 사항을 적용했다고 가정해 보겠습니다. 특히 ArrayList 구현 클래스의 고유한 메서드와 속성을 사용하는 경우 더욱 그렇습니다. #🎜🎜##🎜🎜#추천 튜토리얼: #🎜🎜#JavaTutorial#🎜🎜##🎜🎜#

위 내용은 자바에서 list와 arraylist의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.