>Java >java지도 시간 >Java에서 사용자 정의 ArrayList 클래스를 구현하는 방법

Java에서 사용자 정의 ArrayList 클래스를 구현하는 방법

王林
王林앞으로
2023-06-03 08:55:031589검색

1. 전반적인 구현 아이디어

ArrayList 클래스를 맞춤화할 때는 여러 측면을 미리 생각해야 합니다.

1. ArrayList는 상위 인터페이스 List를 상속해야 합니다

2.

3. 데이터를 구체적으로 저장하는 배열 elementData가 필요합니다. 저장된 데이터의 데이터 유형이 확실하지 않으므로 숫자를 기록하기 위해 배열의 데이터 유형이 필요합니다. 배열의 요소 수입니다.

4. 매개변수가 없는 구성 방법과 매개변수가 있는 구성 방법 제공

5. 필요에 따라 방법 내용 수정

2. 방법 추가

두 가지 방법이 있는데 하나는 하나의 형식 매개변수만 사용하는 것입니다. 메소드, 다른 하나는 형식 매개변수가 두 개 있는 메소드

형식 매개변수가 하나만 있는 add 메소드

이 메소드는 이미 정의된 배열에 전달된 요소를 추가하는 역할을 합니다.

@Override
    public boolean add(Object o) {
    // 将传入的数据o放入数组中,该count是指代元素的个数
        elementData[count] = o;
    // 添加完成后需要将count加1
        count++;
        return true;
    }

Form add 메소드는 두 가지가 있습니다.

이 메소드의 첫 번째 매개변수는 삽입해야 할 위치이고, 두 번째 매개변수는 삽입해야 할 내용입니다.

@Override
    public void add(int index, Object element) {
        // todo 在指定位置插入元素
        for (int i = count; i >index; i--) {
            elementData[i]=elementData[i-1];
        }
        elementData[index]=element;
    }

Java에서 사용자 정의 ArrayList 클래스를 구현하는 방법

3. Size 메소드

세트의 길이를 반환하는 메소드입니다. 이것은 배열입니다. 길이는 처음에 정의된 개수와 관련이 있습니다

@Override
    public int size() {
        return count;
    }

4.isEmpty 메서드

이 메서드는 개수만 판단하면 됩니다. 개수가 0이면 배열이 비어 있음을 의미합니다

@Override
    public boolean isEmpty() {
        return count==0;
    }

5. 구축 방법

구성 방법에서 배열 초기화 및 배열 길이 정의

    public ArrayList(Object[] eleArr) {
        this.elementData = eleArr;
    }

    public ArrayList() {
        // todo 初始化数组的长度
        elementData = new Object[10];
    }

6. 전체 ArrayList 코드

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

}

7. 테스트 테스트 클래스

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

위 내용은 Java에서 사용자 정의 ArrayList 클래스를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제