Heim > Java > javaLernprogramm > Hauptteil

So implementieren Sie eine benutzerdefinierte ArrayList-Klasse in Java

王林
Freigeben: 2023-06-03 08:55:03
nach vorne
1556 Leute haben es durchsucht

1. Allgemeine Implementierungsidee

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

2. Methode hinzufügen

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;
    }
Nach dem Login kopieren

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;
    }
Nach dem Login kopieren

So implementieren Sie eine benutzerdefinierte ArrayList-Klasse in Java

3 Größenmethode

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;
    }
Nach dem Login kopieren

4. isEmpty-Methode

Diese Methode muss nur die Anzahl beurteilen, was bedeutet, dass das Array leer ist

@Override
    public boolean isEmpty() {
        return count==0;
    }
Nach dem Login kopieren

5 . Konstruktionsmethode

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];
    }
Nach dem Login kopieren

6. Gesamt-ArrayList-Code

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];
    }

}
Nach dem Login kopieren

7. Testtestklasse

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));
    }
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage