Lors de la personnalisation de la classe ArrayList, vous devez réfléchir à de nombreux aspects à l'avance
1 L'ArrayList doit hériter de l'interface parent List
2.
3. Besoin Propriétés et méthodes utilisées : tableau elementData qui stocke spécifiquement les données. Étant donné que le type de données des données stockées n'est pas certain, le type de données du tableau est défini comme Object. Un nombre de variables membres est nécessaire pour enregistrer le nombre. d'éléments dans le tableau.
4. Fournir une méthode de construction sans paramètres et une méthode de construction avec paramètres
5 Modifier le contenu de la méthode en fonction des besoins
Il existe deux méthodes, l'une avec un seul paramètre formel. méthode, l'autre est la méthode avec deux paramètres formels
La méthode add avec un seul paramètre formel
Cette méthode joue le rôle d'ajout, en ajoutant les éléments passés au tableau déjà défini
@Override public boolean add(Object o) { // 将传入的数据o放入数组中,该count是指代元素的个数 elementData[count] = o; // 添加完成后需要将count加1 count++; return true; }
Form Il existe deux méthodes d'ajout
Le premier paramètre de cette méthode est la position qui doit être insérée, et le deuxième paramètre est le contenu qui doit être inséré
@Override public void add(int index, Object element) { // todo 在指定位置插入元素 for (int i = count; i >index; i--) { elementData[i]=elementData[i-1]; } elementData[index]=element; }
Cette méthode renvoie la longueur de l'ensemble, qui est un tableau La longueur est liée au nombre défini au début
@Override public int size() { return count; }
Cette méthode n'a besoin que de juger le nombre Si le nombre est 0, cela signifie que le tableau est vide
@Override public boolean isEmpty() { return count==0; }
Dans la méthode de construction Initialisez le tableau et définissez la longueur du tableau
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)); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!