Beim Anpassen der ArrayList-Klasse müssen Sie im Voraus über viele Aspekte nachdenken
1 Die ArrayList muss die übergeordnete Schnittstelle List erben
2
3. Benötigte Eigenschaften und Methoden: Array-ElementDaten, die speziell Daten speichern, da der Datentyp des Arrays als Objekt definiert ist der Elemente im Array.
4. Stellen Sie eine Konstruktionsmethode ohne Parameter und eine Konstruktionsmethode mit Parametern bereit
5. Ändern Sie den Inhalt der Methode entsprechend den Anforderungen
Es gibt zwei Methoden, eine mit nur einem formalen Parameter Methode, die andere ist die Methode mit zwei formalen Parametern
Die add-Methode mit nur einem formalen Parameter
Diese Methode spielt die Rolle des Hinzufügens und fügt die übergebenen Elemente dem bereits definierten Array hinzu
@Override public boolean add(Object o) { // 将传入的数据o放入数组中,该count是指代元素的个数 elementData[count] = o; // 添加完成后需要将count加1 count++; return true; }
Form Es gibt zwei add Methoden
Der erste Parameter dieser Methode ist die Position, die eingefügt werden muss, und der zweite Parameter ist der Inhalt, der eingefügt werden muss
@Override public void add(int index, Object element) { // todo 在指定位置插入元素 for (int i = count; i >index; i--) { elementData[i]=elementData[i-1]; } elementData[index]=element; }
Diese Methode gibt die Länge des Satzes zurück , das ist ein Array. Die Länge hängt von der am Anfang definierten Anzahl ab
@Override public int size() { return count; }
Diese Methode muss nur die Anzahl beurteilen, was bedeutet, dass das Array leer ist
@Override public boolean isEmpty() { return count==0; }
In der Konstruktionsmethode Initialisieren Sie das Array und definieren Sie die Länge des Arrays
public ArrayList(Object[] eleArr) { this.elementData = eleArr; } public ArrayList() { // todo 初始化数组的长度 elementData = new Object[10]; }
import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class ArrayList implements List { /* * 自定义实现ArrayList * 1、要实现List接口 * 2、思考该类抽象出哪些属性-->数组用于保存元素的值elementData,数据类型为Object,用于计数的全局变量count * 3、思考方法--一个全参的构造方法,一个不带参的构造方法 * 4、根据具体需求来实现具体的方法 * */ Object elementData[]; int count; // TODO 数组中的元素个数 @Override public void add(int index, Object element) { // todo 在指定位置插入元素 for (int i = count; i >index; i--) { elementData[i]=elementData[i-1]; } elementData[index]=element; } @Override public boolean add(Object o) { elementData[count] = o; count++; return true; } public ArrayList(Object[] eleArr) { this.elementData = eleArr; } public ArrayList() { // todo 初始化数组的长度 elementData = new Object[10]; } @Override public int size() { return count; } @Override public boolean isEmpty() { return count==0; } @Override public boolean contains(Object o) { return false; } @Override public Iterator iterator() { return null; } @Override public Object[] toArray() { return new Object[0]; } @Override public boolean remove(Object o) { return false; } @Override public boolean addAll(Collection c) { return false; } @Override public boolean addAll(int index, Collection c) { return false; } @Override public void clear() { } @Override public Object get(int index) { return elementData[index]; } @Override public Object set(int index, Object element) { return null; } @Override public Object remove(int index) { return null; } @Override public int indexOf(Object o) { return 0; } @Override public int lastIndexOf(Object o) { return 0; } @Override public ListIterator listIterator() { return null; } @Override public ListIterator listIterator(int index) { return null; } @Override public List subList(int fromIndex, int toIndex) { return null; } @Override public boolean retainAll(Collection c) { return false; } @Override public boolean removeAll(Collection c) { return false; } @Override public boolean containsAll(Collection c) { return false; } @Override public Object[] toArray(Object[] a) { return new Object[0]; } }
public class ArrayListTest { public static void main(String[] args) { ArrayList arrayList = new ArrayList(); arrayList.add("111"); arrayList.add("2222"); arrayList.add("3333"); System.out.println("集合中总共多少个元素:"+arrayList.size()); System.out.println("集合是否为空?"+arrayList.isEmpty()); System.out.println("集合第三个元素:"+arrayList.get(2)); arrayList.add(2,"新加的"); System.out.println("集合第三个元素:"+arrayList.get(2)); } }
Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine benutzerdefinierte ArrayList-Klasse in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!