/
ZufarFaiz
/
SberJavaCourseBeginner
Обзор
Документация
Войти
/
ZufarFaiz
/
SberJavaCourseBeginner
Код
Запросы
5
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
hw_3
MyArrayList/MyArrayList.java
78 строк
2 KB
Семейный
Внёс коррективы в MyArrayList. Сделал итератор вложенным классом, преоброзовал методы add и remove, заменил низкоуровневые for
02 май 2025, 23:53
02 май 2025, 23:53
b4f159a
Код
Авторство
О чём код?
package MyArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.stream.IntStream; public class MyArrayList<T> implements Iterable<T> { private T[] data; private int size; @SuppressWarnings("unchecked") public MyArrayList() { this.size = 0; this.data = (T[]) new Object[10]; } @Override public Iterator<T> iterator() { return new MyIterator(); } public int size() { return size; } public int add(T element) { ensureCapacity(); data[size]=element; return size++; } private void ensureCapacity(){ if(size==data.length){ data=Arrays.copyOf(data,data.length*2); } } public boolean remove(T element) { int index = IntStream.range(0, size).filter(i -> element == data[i]).findFirst().orElse(-1); if (index == -1) { return false; } else{ System.arraycopy(data,index+1,data,index,size-index-1); size--; return true; } } public boolean contains(T elememt) { return Arrays.stream(data).anyMatch(elememt::equals); } public T get(int index) { if (index < size) { return data[index]; } else { throw new RuntimeException("Индекс вне границы"); } } private class MyIterator implements Iterator<T> { private int currentIndex = 0; @Override public boolean hasNext() { return currentIndex < size; } @Override public T next() { if (hasNext()) { return data[currentIndex++]; } return null; } } }