/
alim4ik-had
/
SberJavaCourseBeginner
Обзор
Документация
Войти
/
alim4ik-had
/
SberJavaCourseBeginner
Код
Запросы
2
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
hw3/task3/MyArrayList.java
94 строки
2 KB
alimo
оптимизация списка (task3)
26 апр 2025, 12:37
26 апр 2025, 12:37
9df9ea8
Код
Авторство
О чём код?
package hw3.task3; import java.util.Arrays; import java.util.Iterator; import java.util.stream.Collectors; import java.util.stream.IntStream; public class MyArrayList<T> implements Iterable<T>{ private int size; private T[] data; @SuppressWarnings("unchecked") public MyArrayList(){ this.size = 0; this.data = (T[]) new Object[10]; } @SuppressWarnings("unchecked") public MyArrayList(int size){ this.size = size; this.data = (T[]) new Object[size]; } public MyArrayList(T[] srcData){ this.size = srcData.length; this.data = srcData; } public int size(){ return size; } public T get(int index){ return data[index]; } public int getIndex(T element){ return IntStream.range(0, size) .filter(i -> data[i].equals(element)) .findFirst() .orElse(-1); } public int add(T element){ if(size == data.length){ ensureSize(); } data[size++] = element; return size-1; } public boolean contains(T element){ return Arrays.stream(data).anyMatch(x -> x.equals(element)); } public boolean remove(T element){ int elementIndex = getIndex(element); if(elementIndex == -1) return false; System.arraycopy(data, elementIndex+1, data, elementIndex, size - elementIndex - 1); size--; return true; } public boolean removeByIndex(int index){ if(index < 0 || index >= size) return false; System.arraycopy(data, index+1, data, index, size - index - 1); size--; return true; } @Override public Iterator<T> iterator(){ return new MyIterator<T>(size, data); } @Override public String toString() { StringBuilder output = new StringBuilder("["); for (int i = 0; i < size; i++){ output.append(data[i]); if(i < size -1) output.append(", "); } output.append("]"); return output.toString(); } private void ensureSize(){ int newSize = data.length * 2; T[] newData = (T[])new Object[newSize]; System.arraycopy(data, 0, newData, 0, size); data = newData; } }