Unterschied:
List ist eine Schnittstelle und ArrayList ist eine Implementierungsklasse der List-Schnittstelle. Die ArrayList-Klasse erbt und implementiert die List-Schnittstelle.
Daher kann die List-Schnittstelle nicht erstellt werden, das heißt, wir können keine Instanzobjekte erstellen, aber wir können für die List-Schnittstelle wie folgt eine Objektreferenz erstellen, die auf uns selbst verweist, und das Instanzobjekt der ArrayList Die Implementierungsklasse ist Dies fungiert als Objektreferenz auf die List-Schnittstelle.
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 list;//正确,list = null; List list = new List();//是错误的用法
List list = new ArrayList();
Dieser Satz erstellt ein Objekt der ArrayList-Implementierungsklasse und verfolgt es bis zur List-Schnittstelle. Zu diesem Zeitpunkt handelt es sich um ein List-Objekt. Es verfügt über einige Eigenschaften und Methoden, über die die ArrayList-Klasse verfügt. Es kann jedoch kein Objekt mehr verwendet werden behält alle Eigenschaften der ArrayList und Methoden bei.
ArrayList list=newArrayList();
Die übergeordnete Klasse kann keine Methoden mehr aufrufen, die in der übergeordneten Klasse, aber nicht in der untergeordneten Klasse vorkommen. Andernfalls kommt es zu Kompilierungsfehlern.
Wenn es so aussieht:
Test.java public class Test { public static void main(String[] args) throws ClassNotFoundException { Animals a2 = new Dog(); a2.shout(); a2.guard(); } }
Dann hat a alle Eigenschaften und Methoden von List und verfügt nicht über die eindeutigen Eigenschaften und Methoden seiner Implementierungsklasse ArrayList.
Wenn List und ArrayList dieselben Attribute (z. B. int i) und dieselbe Methode (z. B. void f()) haben,
dann ruft a.i i und a.f in List() auf f() in ArrayList;
Der Schlüssel zum Problem:Warum sollten wir
anstelle von verwenden? List list = new ArrayList()
ArrayList alist = new ArrayList()
Das Problem besteht darin, dass die List-Schnittstelle mehrere Implementierungsklassen hat. Jetzt verwenden Sie ArrayList. Vielleicht müssen Sie eines Tages zu anderen Implementierungsklassen wechseln, wie zum Beispiel:
LinkedList oder Vector usw . Zu diesem Zeitpunkt müssen Sie nur diese Zeile ändern:
Andere Codes, in denen die Liste verwendet wird, müssen überhaupt nicht geändert werden. List list = new LinkedList();
Angenommen, Sie beginnen mit der Verwendung von
ArrayList alist = new ArrayList()
Empfohlenes Tutorial:
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Liste und Arraylist in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!