powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как работает ArrayList?
22 сообщений из 22, страница 1 из 1
Как работает ArrayList?
    #38817005
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, занялся изучением языка Java, написал вот такой код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public class Main {
    public static void main(String args[]){
        ArrayList<String> list = new ArrayList<String>();
        for(int i=0; i<5; i++){
            list.add("номер "+i);
        }
        System.out.println(list.size());
        
        list.remove(1);
        System.out.println(list.size());
        
        for(int i=0; i<list.size(); i++){
            System.out.println(list.get(i));
        }
        
    }
}


Выводит он у меня следующее:
Код: java
1.
2.
3.
4.
5.
6.
5
4
номер 0
номер 2
номер 3
номер 4


Я так понимаю все индексы стоящие после удаленного элемента сдвигаются на -1?
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817013
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_lax,

Учитесь смотреть исходный код в JDK. Любая IDE его может показывать.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public E remove(int index) {
	RangeCheck(index);

	modCount++;
	E oldValue = (E) elementData[index];

	int numMoved = size - index - 1;
	if (numMoved > 0)
	    System.arraycopy(elementData, index+1, elementData, index,
			     numMoved);
	elementData[--size] = null; // Let gc do its work

	return oldValue;
}
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817069
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_lax,
Да, в этом и основное отличие от LinkedList.
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817084
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892VaneS Ri_lax,
Да, в этом и основное отличие от LinkedList.
Там индексы не сдвигаются? :D
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817095
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczno56892VaneS Ri_lax,
Да, в этом и основное отличие от LinkedList.
Там индексы не сдвигаются? :D
Там их просто нет :D
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817169
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892Там их просто нет :D
Если бы их небыло, это был был Set, а не List.
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817178
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А скажите пожалуйста если я буду добавлять новый элемент вот так
Код: java
1.
2.
3.
 list.set(1,"aa");
list.set(3,"bb");
list.set(5,"asd");


То есть индекс будет случайное число, то как мне потом вывести все элементы?
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817193
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_laxТо есть индекс будет случайное число, то как мне потом вывести все элементы?
Так же как и обычно. JavaDoc вообще внимательно читали?
https://docs.oracle.com/javase/7/docs/api/java/util/List.html#set(int, E)
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817194
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczno56892Там их просто нет :D
Если бы их небыло, это был был Set, а не List.
А да, я че-то ступил. Я имел ввиду, что индекс в коллекциях - возможность доступа к элементу за фикс. время (ArrayList) vs не фикс. (LinkedList).
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817291
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczVaneS Ri_laxТо есть индекс будет случайное число, то как мне потом вывести все элементы?
Так же как и обычно. JavaDoc вообще внимательно читали?
https://docs.oracle.com/javase/7/docs/api/java/util/List.html#set(int, E)

Спасибо большое, я вроде разобрался!
Подскажите пожалуйста еще, можно ли зная значение узнать индекс?
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817296
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_laxПодскажите пожалуйста еще, можно ли зная значение узнать индекс?
Сложный вопрос. А что говорит документация?
https://docs.oracle.com/javase/7/docs/api/java/util/List.html#indexOf(java.lang.Object)
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817379
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczVaneS Ri_laxПодскажите пожалуйста еще, можно ли зная значение узнать индекс?
Сложный вопрос. А что говорит документация?
https://docs.oracle.com/javase/7/docs/api/java/util/List.html#indexOf(java.lang.Object)
Да это то я понял, но вот если у меня несколько одинаковых значений, как можно узнать индексы всех этих значений?
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817384
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_lax,

Полным перебором.
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817501
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_lax, ты садист. Коллекция плачет от твоих экспериментов. Вобщем
эррейлист не любит удалений в "голове" листа. Он колбасит весь хвост.
Это как машины в пробке двигаются.

Юзай другой тип коллекции.
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817505
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonэррейлист не любит удалений в "голове" листа.
System.arraycopy - нативная оптимизированая операция чуть ли не на инструкциях процессора. Есть мнение что его не особо колбасит.
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817506
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё познаётся в сравнении. Видел перцев которые делали "очередь" на базе ArrayList.
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817969
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonЮзай другой тип коллекции.
Может тогда что посоветуете? Я не говорил что мне нужно удалять начало коллекции. Будут удаляться повторяющиеся значения, а вот в каком месте они стоят, я этого не знаю.
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817971
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Множество хранит (только) уникальные значения.
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38817991
VaneS Ri_lax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovМножество хранит (только) уникальные значения.
Мне не нужно хранить только уникальные, мне нужно чтобы было именно удаление по определенному принципу. Но за совет про множество спасибо, пригодится!
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38818027
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_laxmaytonЮзай другой тип коллекции.
Может тогда что посоветуете? Я не говорил что мне нужно удалять начало коллекции. Будут удаляться повторяющиеся значения, а вот в каком месте они стоят, я этого не знаю.
если известны все значения, которые нужно удалить из коллекции, то можете использовать итератор, проверяя каждый элемент на совпадение с удаляемыми значениями. Один проход и все удалено. Тут IMHO лучше LinkedList (если идеологически)
А так правильно тут сказали, смысл использовать лист, если можно сразу set, и ничего удалять не придёться.
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38818191
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VaneS Ri_laxЯ не говорил что мне нужно удалять начало коллекции. Будут удаляться повторяющиеся значения, а вот в каком месте они стоят, я этого не знаю.

Все зависит от того как часто.
ArrayList хорош на операциях поиска i-го элемента. Ну и на полном сканировании.
Если есть правильная оценка сверху количества элементов, которые собираются в него добавить, то и добавление элементов в конец идет быстро. В общем случае, на операциях изменения количества элементов у него могут быть задержки связанные с копированием элементов (вплоть до всех).

Если операции удаления редки, а поиск i-го элемента происходит часто, то это одна ситуация, если, наоборот, другая.
...
Рейтинг: 0 / 0
Как работает ArrayList?
    #38818198
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDiverесли известны все значения, которые нужно удалить из коллекции,
TC написал простым русским языком все те Ai, которые удолетворяют условиям
для любых i,j таких,
что i>=0
и j>=0
i<A.size()
и j<i
Aget(i).equals(A.get(j)).

DDiverОдин проход и все удалено.
ну-ну.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как работает ArrayList?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]