Здравствуйте,есть задача написать свою коллекцию,но не понимаю как подойти к этому,как создать динамический массив в котором будут храниться все данные?
Ответ
Основные методы и логика масштабирования внутреннего массива в обе стороны:
public class MyArrayList
/*
Добавляет новый элемент в список. При достижении размера внутреннего
массива происходит его увеличение в два раза.
*/
public void add(T item) {
if(pointer == array.length-1)
resize(array.length*2); // увеличу в 2 раза, если достигли границ
array[pointer++] = item;
}
/*
Возвращает элемент списка по индексу.
*/
public T get(int index) {
return (T) array[index];
}
/*
Удаляет элемент списка по индексу. Все элементы справа от удаляемого
перемещаются на шаг налево. Если после удаления элемента количество
элементов стало в CUT_RATE раз меньше чем размер внутреннего массива,
то внутренний массив уменьшается в два раза, для экономии занимаемого
места.
*/
public void remove(int index) {
for (int i = index; i
/*Вспомогательный метод для масштабирования.*/
private void resize(int newLength) {
Object[] newArray = new Object[newLength];
System.arraycopy(array, 0, newArray, 0, pointer);
array = newArray;
}
}
Комментариев нет:
Отправить комментарий