Heim  >  Artikel  >  Java  >  Der Unterschied und die Verbindung zwischen Array und ArrayList

Der Unterschied und die Verbindung zwischen Array und ArrayList

巴扎黑
巴扎黑Original
2017-06-26 10:22:592220Durchsuche

Der Blogger ging heute zu einem Java-Praktikumsinterview und stellte fest, dass der Blogger mit vielen der grundlegendsten Datenstrukturen in Java nicht vertraut war. Als der Interviewer nach einigen gängigen Datenstrukturen wie HashMap fragte, konnte der Blogger antworten klar und logisch, aber nachdem der Blogger nach dem Unterschied und der Verbindung zwischen Array und ArrayList gefragt hatte, war er verwirrt. Okay, es gibt nicht viel zu sagen, klären Sie es jetzt einfach.

Erstens ist Array ein Array in Java. Es gibt drei Möglichkeiten, ein Array in Java zu deklarieren:

1 int[] a = new int[10]; 2 int a[] = new int[10]; //这种方式同c语言一样3 int a[] = {1,2,3,4};

Wie aus dem Obigen ersichtlich ist Deklaration, Wenn wir ein Array definieren, müssen wir den Datentyp des Arrays angeben. Mit anderen Worten, das Array ist eine Sammlung desselben Datentyps. Darüber hinaus deklarieren wir beim Deklarieren des Arrays auch die Größe des Arrays und die Anzahl der Elemente des Arrays ist festgelegt.

Als nächstes schauen wir uns die Anwendung von Arrays an:

 1 import java.util.Arrays; 2  3 /** 4  * @author jy 5  * @time 下午7:59:26 6  */ 7 public class ArrayAndArrayList { 8     public static void main(String[] args) { 9         10      int a[] = new int[4];11      System.out.println(a.length);  //数组的长度属性12      13      int b[] = {1,2};14      int c[] = {1,2};15      System.out.println(b.equals(c));  //输出为false,可见数组并没有重写hashcode()和equals()方法16      System.out.println(Arrays.equals(b, c));  //利用java.util.Array的equals()来判断数组是否相等,这里输出true17      System.out.println(isEquals(b,c));18      19     }20 21     /**22      * 重写方法来手动实现数组之间的比较方法23      */24     public static boolean isEquals(int[] b, int[] c) {25         26         if(b == null || c == null){27             return false;28         }29         if(b.length != c.length){30             return false;31         }32         for (int i = 0; i < c.length; i ++) {33             if(b[i] != c[i]){34                 return false;35             }36         }37         return true;38     }39     40 }

Es ist ersichtlich, dass die Länge des Arrays fest und unveränderlich ist. Arrays überschreiben nicht die Methoden hashcCode() und equal() des Objekts.

Wir alle wissen, dass Arrays auch zweidimensional sein können:

1 int[][] da = new int[2][3];  //推荐用这种声明方式,更能表明数组的类型2 int db[][] = new int[4][3];

Es gibt jedoch eine Änderung Langes zweidimensionales Array:

1 int[][] dc = new int[2][];  //第一维的大小不能空缺,第二维的大小可以是不一样的。2 dc[0] = new int[2];3 dc[1] = new int[3];

Okay, lassen Sie uns hier mit der Anwendung der grundlegenden Datenstruktur des Arrays aufhören. Um das Thema hervorzuheben, werden wir einige andere irrelevante Themen behandeln Anwendungen. Kein Unsinn mehr.

Als nächstes werfen wir einen Blick auf die ArrayList-Sammlung:

ArrayList ist ein dynamisches Array, das eine komplexe Version eines Arrays ist. Es kann dynamisch hinzugefügt und gelöscht werden Elemente. ArrayList Implementiert die java.util.Collections.Collection.List-Schnittstelle. Werfen wir einen Blick auf die grundlegendste Deklaration:

ArrayList list = new ArrayList(10);  
ArrayList<Integer> list1 = new ArrayList<Integer>();

In der ersten Deklaration ohne Verwendung von Generika kann diese Liste zu verschiedenen Type-Elementen hinzugefügt werden, und arraylist tut dies auch Die Länge muss nicht angegeben werden. Bei der Verwendung von Generika können wir nur einen Datentyp hinzufügen.

Die wichtigen Methoden und Eigenschaften von ArrayList werden im folgenden Code gezeigt:

 ArrayList<Integer> list =  ArrayList<Integer>         list.add(1         list.add(2         list.add(3         list.remove(1         Object[] p = list.toArray();           System.out.println(p[0         System.out.println(list.contains(4));           System.out.println(list.size());           System.out.println(list.get(0));

Das Obige zeigt einige wichtige Methoden von ArrayList. Im Folgenden vergleichen wir diese beiden Sammlungsklassen:

(1) ArrayList ist eine komplexe Version von Array
ArrayList kapselt intern ein Array vom Typ Object. Im Allgemeinen unterscheidet es sich von einem Array Der Unterschied besteht darin, dass viele Methoden von ArrayList, wie Index, IndexOf, Contains, Sort usw., die entsprechenden Methoden von Array basierend auf dem internen Array direkt aufrufen.

(2) Gespeicherte Datentypen

ArrayList kann heterogene Objekte speichern, während Array nur Daten desselben Datentyps speichern kann.

(3) Variable Länge

Die Länge eines Arrays ist tatsächlich unveränderlich. Die tatsächliche Länge eines zweidimensionalen Arrays variabler Länge ist ebenfalls festgelegt . . Die Länge von ArrayList kann angegeben werden (auch wenn die Länge angegeben wird, wird sie automatisch um das Zweifache erweitert) oder nicht angegeben und hat eine variable Länge.

(4) Zugreifen auf, Hinzufügen und Löschen von Elementen

Für allgemeine Referenztypen hat dieser Teil keine großen Auswirkungen, aber für Werttypen führt das Hinzufügen und Ändern von Elementen zu ArrayList zum Packen und Auspackenvorgänge sowie häufige Vorgänge können die Effizienz beeinträchtigen. Darüber hinaus ist ArrayList ein dynamisches Array, das keine Algorithmen für den schnellen Zugriff über Schlüssel oder Wert enthält. Das Aufrufen von IndexOf, Contains und anderen Methoden ist also eine einfache Schleife zum Suchen von Elementen. Daher ist das häufige Aufrufen solcher Methoden nicht besser als das Schreiben Schleifen und eine kleine Optimierung können schnell durchgeführt werden. Wenn Sie diese Anforderung haben, empfiehlt es sich, eine Sammlung von Schlüssel-Wert-Paaren wie Hashtable oder SortedList zu verwenden.

Okay, das war's mit dem Vergleich dieser beiden Datenstrukturen. Wenn etwas nicht stimmt, was Ihrer Meinung nach willkommen ist, korrigieren Sie mich bitte.

Außerdem schreibe ich zum ersten Mal einen Blog, seien Sie also bitte vorsichtig.

Das obige ist der detaillierte Inhalt vonDer Unterschied und die Verbindung zwischen Array und ArrayList. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Ein einfacher Java-AlgorithmusNächster Artikel:Ein einfacher Java-Algorithmus