ArrayList 클래스를 맞춤화할 때는 여러 측면을 미리 생각해야 합니다.
1. ArrayList는 상위 인터페이스 List를 상속해야 합니다
2.
3. 데이터를 구체적으로 저장하는 배열 elementData가 필요합니다. 저장된 데이터의 데이터 유형이 확실하지 않으므로 숫자를 기록하기 위해 배열의 데이터 유형이 필요합니다. 배열의 요소 수입니다.
4. 매개변수가 없는 구성 방법과 매개변수가 있는 구성 방법 제공
5. 필요에 따라 방법 내용 수정
두 가지 방법이 있는데 하나는 하나의 형식 매개변수만 사용하는 것입니다. 메소드, 다른 하나는 형식 매개변수가 두 개 있는 메소드
형식 매개변수가 하나만 있는 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; }
세트의 길이를 반환하는 메소드입니다. 이것은 배열입니다. 길이는 처음에 정의된 개수와 관련이 있습니다
@Override public int size() { return count; }
이 메서드는 개수만 판단하면 됩니다. 개수가 0이면 배열이 비어 있음을 의미합니다
@Override public boolean isEmpty() { return count==0; }
구성 방법에서 배열 초기화 및 배열 길이 정의
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)); } }
위 내용은 Java에서 사용자 정의 ArrayList 클래스를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!