Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 6128 сообщений
Cообщения с меткой

коллекции - Самое интересное в блогах

Следующие 30  »
lenov_ru

Fishing PRO v 1.10 » Клуб пользователей планшетов на ANDROID / Lenovo IdeaTab A2109 8GB / Samsung Galaxy Tab 2 7.0 / Asus Transformer TF700T / NVIDIA Tegra 3

Воскресенье, 28 Августа 2016 г. 06:47 (ссылка)
lenov.ru/games/26198-fishin...v-110.html


Fishing PRO - игра про спортивную рыбалку с красивой графикой и обширными геймплейными особенностями и разнообразностями. Путешествуйте по всему миру, выбирайте экзотические места, чтобы зак

Комментарии (0)КомментироватьВ цитатник или сообщество
Taniaum

Королевские резиденции Германии: Мюнхенский дворец. Часть 3.Коллекции

Четверг, 18 Августа 2016 г. 18:14 (ссылка)

Это цитата сообщения Майя_Пешкова Оригинальное сообщение






            Королевские резиденции Германии: Мюнхенский дворец.Часть 1.История,экстерьер и интерьер



часть 1



Королевские резиденции Германии: Мюнхенский дворец. Часть 2.Сокровища 



часть 2



Резиденция Виттельсбахов Музей Резиденции (план зданий)была впервые открыта для посетителей в 1920 году. Апартаменты, церемониальные залы и дворцовые комнаты, принадлежавшие правителям Баварии, предоставляют уникальную возможность ознакомиться с множеством разных архитектурных стилей в одном месте. Резиденция демонстрирует, как жили Виттельсбахи в прошлом и как они использовали искусство и архитектуру для выражения своей власти. За многие столетия династия собрала огромные коллекции скульптуры, живописи, фарфора, серебра, мебели и драгоценностей.



М Е Б Е Л Ь







 

далее
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Mikhalochka

Коллекции макияжа Chanel осень 2016

Пятница, 05 Августа 2016 г. 15:25 (ссылка)
selflovers.ru/krasota-i-zdo...osen-2016/

По словам нового главного визажиста Chanel Лючии Пика – красный цвет вне времени. Он одновременно дерзкий и сексуальный.
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
merno

Коллекции толстовок

Понедельник, 03 Августа 2015 г. 08:08 (ссылка)

Коллекции толстовок.


Читать далее
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
xinpa

Футболки iceberg коллекции весна лето

Пятница, 31 Июля 2015 г. 22:33 (ссылка)

Футболки iceberg коллекции весна лето.


Читать далее
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
starovar

Футболка bmw sauber f1 logo puma из коллекции bmw sauber f1 team

Пятница, 17 Июля 2015 г. 22:01 (ссылка)

Футболка bmw sauber f1 logo puma из коллекции bmw sauber f1 team.


Читать далее
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

[Из песочницы] Одна из задач при собеседовании и попытка найти правильное решение

Среда, 13 Июля 2016 г. 16:13 (ссылка)

Решил поменять специальность и попробовать себя в JAVA. При этом стал проходить достаточно много тестов он-лайн от компаний, на собеседование которых хотел бы попасть. Попалась достаточно интересная задача, возможно, она интересна только начинающим, а кому-то станет очевидной и примитивной, тем не менее я пробовал получить разнообразные варианты решения ее на различных форумах.



Суть задачи такова. Необходимо написать метод, который принимает в качестве аргументов две коллекции ArrayList одинакового размера, например, одна a = [a1, a2, a3, ....], а вторая b = [b1, b2, b3 ...]. Метод должен превратить коллекцию а в следующий вид: a = [a1, b1, a2, b2, a3, b3....]. При этом решение должно быть экономным к ресурсам и процессорному времени.



Первый вариант, который может быть придуман фактически в лоб и этот вариант я тоже видел на форуме:



    static void merge4(ArrayList a, ArrayList b) {
int size = a.size();
int count = 0;
for (int i = 0; icode>


Когда тестировал метод, который принимает две коллекции с количеством элементов 1 000 000, то еле дождался результата. Получил 76 867 мс, печально, хотя вполне ожидаемо, когда каждая вставка методом add, сопровождается копированием массива, что находится правее… При миллионе элементов это, увы, очень плохой вариант.



Потом второй вариант, который можно придумать, тоже скорее всего в лоб, это использование промежуточной коллекции, типа:



	static void merge3(ArrayList a, ArrayList b) {
ArrayList c = new ArrayList(a.size()*2);
for (int i=0; icode>


Это заняло около 6 мс. Однако вполне очевидно, что данный способ не вполне экономен в части Memory.



Потом конечно хочется исключить промежуточную коллекцию. Именно этот вариант я предложил на собеседовании, и увы, провалил задание, хотя утешило, что на форуме предлагали и похуже вариант ребята, которые уже не парятся на тему «надо найти стартовую площадку для начала». Вот собственно говоря код:



	static void merge2(ArrayList a, ArrayList b) {
int size = b.size();
for (int i = 0; i < size; i++) {
a.add(null);
}
for (int i = b.size(); i > 0; i--) {
a.set((i << 1) - 1, b.get(i - 1));
a.set((i << 1) - 2, a.get(i - 1));
}
}


Время выполнения составило 16 мс. Время ухудшилось, причем значительно. Но плюс естественно есть — это отсутствие промежуточной коллекции. Причем здесь решил «выпендриться», показав, что я знаю как побитовыми операциями я могу сделать умножение на 2. По факту, вряд ли я получил тут экономию процессорного времени, но даже если и получил, то она едва заметна в данном случае.



Последний вариант, я думал оптимизировал за счет того, что использую метод a.ensureCapacity(size * 2) с мыслями, что как минимум я избавлюсь от одного лишнего копирования массива, потому что при превышении текущего размера Array коллекция увеличивает число нового массива в 1,5 больше от текущего, а так как нам нужна в итоге коллекция с удвоенным числом элементов, то это потом приведет еще к одному увеличению размера массива, которое нам по факту не нужно (т.е. чуточку экономит ресурсы Memory), т.е. по факту выглядело бы это так:



	static void merge1(ArrayList a, ArrayList b) {

int size = b.size();
a.ensureCapacity(size * 2);
for (int i = 0; i < size; i++) {
a.add(null);
}

for (int i = b.size(); i > 0; i--) {
a.set((i << 1) - 1, b.get(i - 1));
a.set((i << 1) - 2, a.get(i - 1));
}

}


Выгода по времени не существенна, но вроде 1мс есть. Но плюс все-таки есть. Пусть в каждой из коллекций, передаваемых в метод было size элементов, то при вызове метода merge1 там будет size*2 элементов. Для метода merge1 в принципе при вызове a.size() покажет такой же результат, но в основе этой коллекции до вызова метода trimToSize() будет массив с количеством элементов 1,5*1,5*size, т.е. мы сэкономили уток ресурсов.



Вообщем, ближе к самому оптимальному варианту решения задачи с учетом условия задачи, которое как минимум я нашел:



	static void merge0(ArrayList a, ArrayList b) {
a.addAll(b);
for (int i = b.size(); i > 0; i--) {
a.set((i << 1) - 1, b.get(i - 1));
a.set((i << 1) - 2, a.get(i - 1));
}
}


Итог 5 мс, и, как мне кажется, перерасхода ресурсов тоже нету.



Задача оказалась достаточно интересной, для ее решения мне дали 30 минут.



Однако, сама постановка задачи вроде и имеет цель оценить знания внутренней реализации коллекции, но в то же время все-таки изменять один из передаваемых параметров в методе является дурным тоном, поэтому стоило бы ее переформулировать немного ее в другом контексте.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/305612/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<коллекции - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda