/
Elyumusa
/
SberJavaCourseBeginner
Обзор
Документация
Войти
/
Elyumusa
/
SberJavaCourseBeginner
Код
Запросы
2
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
hw_3
src/hw3/task3/MyArrayList.java
82 строки
2 KB
Elyumusa
Task 3 updated
08 апр 2025, 14:08
08 апр 2025, 14:08
8767c2c
Код
Авторство
О чём код?
package hw3.task3; import java.util.Arrays; import java.util.Iterator; import java.util.Spliterator; import java.util.function.Consumer; import java.util.stream.Stream; public class MyArrayList<T> implements Iterable<T> { @Override public Iterator<T> iterator() { return new MyArrayListIterator(); } protected T[] data; private int length; public int size(){ return length; } public MyArrayList(){ data = (T[]) new Object[10]; length = 0; } public void add(T element){ ensureCapacity(); data[length]=element; length++; } private void ensureCapacity(){ if(length == data.length){ data= Arrays.copyOf(data, data.length*2);} } public boolean contains(T element){ return Arrays.stream(data,0,length).anyMatch(el -> el == element); } public boolean remove(T element){ for(int i=0;i<data.length;i++){ if (data[i] == element) { System.arraycopy(data,i+1,data,i,length-i-1); data[--length]=null; if(length>0 && length<data.length/4){ data = Arrays.copyOf(data,data.length/2); } return true; } } return false; } @Override public void forEach(Consumer<? super T> action) { for(T el: this){ action.accept(el); } } class MyArrayListIterator implements Iterator<T>{ //MyArrayList<T> arrayList; // public MyArrayListIterator(MyArrayList<T> arrayList){ // this.arrayList=arrayList; // } private int currentIndex=0; @Override public boolean hasNext() { return currentIndex<length; } @Override public T next() { return data[currentIndex++]; } @Override public void remove() { Iterator.super.remove(); } } }