Я пытался реализовать свой собственный класс ArrayList
для образовательных целей, и когда мне нужно его выращивать, мне нужно скопировать содержимое старого маленького массива в новый более крупный.java как реализовать System.arraycopy() самостоятельно
Выполнение этого с помощью for loop
очень неэффективно и потребует O(n) time
в зависимости от размера массива, который нужно скопировать. К счастью, Java имеет функцию System.arraycopy()
, которая, как я подозреваю, не использует for loop
, но копирует весь массив сразу, уступая меньше времени.
Однако возможно ли, чтобы я сделал копии этих копий или это настолько глубоко похоронено, что только компилятор java может это сделать?
P.S Есть много функций, которые я не знаю, как реализовать и, кажется, работать с использованием магии System.out.println()
например или сокетов.
Для уточнения Я просто хочу знать, как я могу самостоятельно выполнять подобные осмысленные операции с памятью.
Я не думаю, что можно скопировать массив в O (1) раз. – shmosel
Копирование массива будет по-прежнему зависеть от размера, так как байты необходимо перемещать, поэтому даже «System.arraycopy()» будет O (n) - возможно, только быстрее на какой-то фактор из-за отсутствующего цикла. Вопрос будет: если в образовательных целях производительность играет большую роль? – Thomas
хорошо, а не O (1) раз, но по крайней мере эффективнее, чем цикл for –