![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 7 Всего: 17 |
Пытаюсь создать массив известной длины, каждый элемент которого ArrayList<Point>.
При описании все нормально, а вот при попытке инициализировать
получаю ошибку "Error(68,21): generic array creation" Честно говоря пытался ставить круглые скобки в разные места - не помогает. Потом понял, что и не должно помогать. Как создать такой массив? -------------------- Mirkes |
|||
|
||||
| Stolzen |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
Используйте List, а не массив.
Почему лучше делать так, и почему создание массива-генерика приводит к ошибке, можно почитать у J. Bloch в Effective Java 2nd edition, item 25.
Если просто невыносимо хочется создать такой массив, делайте это так:
|
||||
|
|||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
||||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
для топикстартера:
т.к. коллекция динамическая, лучше использовать Vector - он быстрее, и он синхронизирован
|
|||
|
||||
| jk1 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
При условии что руки у программиста достаточно прямые.
Можно пруфлинк? -------------------- Opinions are like assholes — everybody has one |
||||
|
|||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
||||
|
||||
| dorogoyIV |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
насчет скорости щас лень разбираться, но я помню, что, вектор всегда был быстрее... а насчет синхронизации вот исходники: Vector:
ArrayList:
|
||||
|
|||||
| jk1 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Здесь Вы конечно правы.
Синхронизация конечно сегодня дешевая, но чтобы синхронизированный код был заметно быстрее несинхронизированного - в это верится с трудом. Да и бенчмарки показывают примерное равенство по скорости, разве что итератор у вектора заметно медленнее. Я уже не говорю о том, что преждевременная оптимизация по скорости - вообще зло. -------------------- Opinions are like assholes — everybody has one |
||||
|
|||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
jk1, если взять все в совокупности, в итоге выиграет все равно вектор.
а ты молодец! если бы не ты, я бы не полез в исходники... спасибо тебе!!!... Добавлено через 5 минут и 49 секунд jk1, ты сам прекрасно знаешь - всегда вектор будет быстрее чем аррэйлист! хватит мне уже тут мозг долбить... |
|||
|
||||
| Stolzen |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
||||
|
||||
| Mirkes |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 7 Всего: 17 |
Вообще-то я создавал массив известной длинны, состоящий из массивов неизвестной заранее длины.
Достаточно прямые. Более того, после формирования всех ArrayList'ов я потом трансформирую все в массивы. Спасибо большое, теперь понял почему была ошибка. Пришлось использовать ArrayList<ArrayList<Point>>, все работает. Это сообщение отредактировал(а) Mirkes - 10.3.2012, 17:32 -------------------- Mirkes |
||||
|
|||||
| Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: 4 Всего: 72 |
Ох ничего себе, а мужики-то не знают. Оказывается, синхронизированный код быстрее того, который написан без заморачивания на корректную работу в многопоточной среде. Вот только в реальности вектором в современной джаве никто не пользуется. Отдельная сущность не нужна, ArrayList быстрее, а в случае многопоточной работы его можно обернуть в synchronized или воспользоваться специальным примитивом под задачу. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |