Мне был задан следующий небольшой вопрос с множественным выбором в моем классе APCS относительно добавления элементов в ArrayList, и хотя один ответ кажется мне интуитивно правильным (выбор B), Я не совсем уверен, является ли это на самом деле правильно или что на самом деле происходит за кулисами производительности мудрыми:ArrayList add (index, object) сложность add (object)
//Consider the following methods
public static List<Integer> process1(int n) {
List<Integer> someList = new ArrayList<Integer>();
for (int k = 0; k < n; k++) {
someList.add(new Integer(k));
}
return someList;
}
public static List<Integer> process2(int n) {
List<Integer> someList = new ArrayList<Integer>();
for (int k = 0; k < n; k++) {
someList.add(k, new Integer(k));
}
return someList;
}
//Which of the following best describes the behavior of process1 and process2?
//(A) Both methods produce the same result and take the same amount of time
//(B) Both methods produce the same result and process1 is faster than process2
//(C) The two methods produce different results and process1 is faster than process2
//(D) The two methods produce different results and process2 is faster than process1
Примечание: Я сделал тест оба метода на моем компьютере, используя достаточно большие параметры, и оба весьма близки но метод 1 кажется немного более быстрым. Кроме того, это не проблема, домашнее задание быть включен или что-нибудь, так что нет необходимости испытывать беспокойство о предоставлении мне с ответами :)
Я думаю, что в методе 'process2' вы хотите протестировать с помощью' someList.add (0, new Integer (k)); 'вместо' someList.add (k, new Integer (k)); '. Тогда вы можете заметить разницу. Поскольку 'add (int, element)' будет 'перемещает элемент в данный момент в этой позиции (если есть) и любые последующие элементы вправо'. На мой взгляд, это будет O (n). С текущим кодом вы всегда добавляете элемент в следующий элемент, который доступен, и я думаю, поэтому номера производительности одинаковы для обоих методов. Где «add (element)» имеет сложность O (1). –