Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Remove from ArrayList (https://javascript.ru/forum/server/24077-remove-arraylist.html)

Slawaq 17.12.2011 03:45

Remove from ArrayList
 
Возможно ли организовать удаление элемента с ArrayList таким способом, чтобы при удалении не выполнялся arraycopy, и при этом не создавался новый массив, где на месте удалённого элемента будет новый, а чтобы при удалении значения оно становилось null, и при последующим добавлении элемента он становился на это место(ну на то место в этом массиве где-будет null)
то бишь чтобы такой код заработал:
Код:

java.util.ArrayList<String> x = new java.util.ArrayList<String>();
x.add("first");
x.add("second");
x.add("third");
for(String m:x) System.out.println(m);
/* Выведет нам :
first
second
third
*/
x.remove(1);
for(String m:x) System.out.println(m);
/* Выведет нам :
first
null
third
*/
x.add("fourth");
for(String m:x) System.out.println(m);
/* Выведет нам :
first
fourth
third
*/

вот, как возможно такое организовать без больших потерь эффективности?
Или хотя бы скажите где можно взять исходники класса ArrayList, возможно на их основе я сделаю себе некий костыль чтобы с ним можно было так работать

B@rmaley.e><e 17.12.2011 07:24

JavaScript и Java совершенно разные языки. И за помощью по второму нужно идти на специализированные форумы, а не сюда.
Цитата:

Сообщение от Slawaq
вот, как возможно такое организовать без больших потерь эффективности?

Нужно не удалять элемент, а перезаписывать его null'ом. А при вставке просто искать первый элемент со значением null (O(N) по времени), либо хранить эти индексы в стеке, добавляя индекс туда при удалении (O(N) по памяти).
Цитата:

Сообщение от Slawaq
Или хотя бы скажите где можно взять исходники класса ArrayList, возможно на их основе я сделаю себе некий костыль чтобы с ним можно было так работать

Зачем Вам исходники ArrayList? Вам вполне хватит его интерфейса.

Slawaq 17.12.2011 10:17

Цитата:

JavaScript и Java совершенно разные языки. И за помощью по второму нужно идти на специализированные форумы, а не сюда.
На главной форуме было написано "Вопросы по PHP, Ruby, Java и другим серверным языкам и технологиям. Взаимодействие сервера с Javascript." тем более этот форум является таковым где могут быстро ответить, так что я решил и тут создать такую тему)
Цитата:

Зачем Вам исходники ArrayList? Вам вполне хватит его интерфейса.
Да, феил, я как-то поторопился и забыл что нужно так(
Цитата:

Нужно не удалять элемент, а перезаписывать его null'ом.
Ну так, в ArrayList, например, при 10 заполненных элементах есть массив на 15 элементов, где последние 5 это null, но они не отображаются.
Да, я же так и хочу, чтобы при удалении из этого 15-элементного массива, его размер не увеличился, а чтобы лишь тот элемент что я удаляю поменял свое значение на null, а при добавлении, цикл перебирал элементы и находил те элементы которые null и перезаписывал их на указанное значение, при этом возвращая индекс в который он записал указанное значение. Просто я думал может что-то такое готовое уже есть, ну если вдруг)) если нету то сейчас буду делать))
Цитата:

Slawaq,
B@rmaley.e><e,
из любопытства на хрена вы учили java?
Для меня это была альтернатива PHP, который я знал немного, но не хотел нормально учить, так как эффективность в нём достигается за счёт различных фреймворков, и тому подобного(а значит после самого изучения языка приходилось тратить время на изучение этой кучи, и тем более сам понимаешь что это костыли)) а java отличный вариант, так как кросс-платформен, и быстр по-сравнению с PHP(Наверно, не хочу убеждать тех кто в это не поверит))))

Slawaq 17.12.2011 10:33

Цитата:

лично фейсбушники на пхп сидят. ед мне нра java красивее чем пхп
ну ведь не на чистой сборке) на своем "моде" XHProf, и вот ещё прошлогодний топик на хабре, на тему фейсбушного PHP так что я думаю если и учить PHP, так это подразумевает учить ещё учение каких-либо хороших фреймворков для него)

Slawaq 17.12.2011 10:55

вот, вк, и то это старое, хотя я думаю мало что изменилось, но основное там для PHP, это "костыль" кэша, хотя работают с ним там по-ходу очень эффективно)) и да кстати, этот ArrayList который я тут хочу немного изменить нужен мне тоже для правильной реализации кэша)

Slawaq 17.12.2011 11:16

Цитата:

Сообщение от cic bio (Сообщение 143824)
меня больше пугает слово лучшими умами россии это что такое они атм наделали иисуси

Ну я помню что где-то читал, что это брат Павла(Николай) и ещё там по-ходу люди которые вместе с Николаем были победителями всероссийских олимпиад по информатике))

B@rmaley.e><e 17.12.2011 22:29

Цитата:

Сообщение от Slawaq
Ну я помню что где-то читал, что это брат Павла(Николай) и ещё там по-ходу люди которые вместе с Николаем были победителями всероссийских олимпиад по информатике))

Да, Николай Дуров и Андрей Лопатин взяли абсолютное золото на международных студенческих соревнованиях по олимпиадному программированию ACM ICPC в 2000 и 2001-ом годах. Они оба имеют непосредственное отношение к Вконтакте.
Также вместе с ними на этих чемпионатах выступали Олег Етеревский и Виктор Петров. Они, если не ошибаюсь, с Вконтакте сейчас не связаны.
Вконтакте активно хантит нынешних победителей этих олимпиад. ЕМНИП, вся тройка студентов СПбГУ, получивших золотые медали на ACM ICPC 2011, работает там. Многообещающие студенты вылавливаются прямо в университете: несколько раз в год проходит чемпионат СПбГУ, который спонсируется угадайте кем.

Но вместе с тем, олимпиадное программирование весьма далеко от программирования промышленного. Когда решается сложная задача в ограниченное время ни о каких архитектурных изысках, конечно же, речи не идёт.

B@rmaley.e><e 17.12.2011 23:27

Bionical Magic, тут есть список задач с прошедших соревнований.

Shaci 22.12.2011 13:45

Цитата:

Сообщение от Slawaq (Сообщение 143805)
Для меня это была альтернатива PHP, который я знал немного, но не хотел нормально учить, так как эффективность в нём достигается за счёт различных фреймворков, и тому подобного(а значит после самого изучения языка приходилось тратить время на изучение этой кучи, и тем более сам понимаешь что это костыли)) а java отличный вариант, так как кросс-платформен, и быстр по-сравнению с PHP(Наверно, не хочу убеждать тех кто в это не поверит))))

в Java этих фреймворков, похоже, что еще больше, чем в PHP
Вероятно, просто Core Java не имеет никакой ценности

Shaci 22.12.2011 16:19

Цитата:

Сообщение от Shaci (Сообщение 145187)
в Java этих фреймворков, похоже, что еще больше, чем в PHP
Вероятно, просто Core Java не имеет никакой ценности

вообще знать надо всё. как мне кажется
и JS и PHP и Java


Часовой пояс GMT +3, время: 17:52.