Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

конструктор Vectorа

29K
26 декабря 2008 года
Existor
20 / / 03.07.2008
В описании класса есть конструктор:

Vector(int initialCapacity, int capacityIncrement)
Создает пустой вектор с заданным объемом памяти (initialCapacity) и увеличением объема (capacityIncrement).

Приведите пример как им пользоваться.
Особенно интересует как узнать initialCapacity.

За помощь буду признателен.
355
27 декабря 2008 года
<SCORP>
786 / / 21.10.2006
пользоваться как обычно - new Vector(....)
как узнать initialCapacity - параметр, который можно, если ты заранее знаешь, сколько ты элементов будешь хранить в этом векторе.
нарп, надо тебе массив скопировать в вектор:
 
Код:
String[] array = new String() { "sddd", "asd", "Sdf" };
Vector v = new Vector(array.length); // в качестве initialCapacity берём array.length
for (int i = 0; i < array.length; i++)
  v.add(array);
63
27 декабря 2008 года
Zorkus
2.6K / / 04.11.2006
[QUOTE=<SCORP>;271876]пользоваться как обычно - new Vector(....)
как узнать initialCapacity - параметр, который можно, если ты заранее знаешь, сколько ты элементов будешь хранить в этом векторе.
нарп, надо тебе массив скопировать в вектор:
 
Код:
String[] array = new String() { "sddd", "asd", "Sdf" };
Vector v = new Vector(array.length); // в качестве initialCapacity берём array.length
for (int i = 0; i < array.length; i++)
  v.add(array);
[/QUOTE]
Вектором вообще не очень желательно пользоваться, это устаревшая реализация динамического массива. А уж не типизированным вектором пользоваться...:rolleyes:
Следует использовать ArrayList. Либо если требуется иметь thread-safe реализацию, используйте спец. контейнеры для этого.
29K
28 декабря 2008 года
Existor
20 / / 03.07.2008
Странно как-то.

 
Код:
Vector v = new Vector(array.length);


ведь initialCapacity это объем памяти, а при таком задании получается 3
бита, наверно.:confused:

а метод add, помоему сам задает initialCapacity, заново.

Я думаю что если пользоваться конструктором Vector(int initialCapacity),
Взяв за initialCapacity размер объекта в битах.

Можно будет обращаться к его элементам так:

 
Код:
v = var;


Таковы мои предположения.
63
28 декабря 2008 года
Zorkus
2.6K / / 04.11.2006
Цитата: Existor
Странно как-то.

 
Код:
Vector v = new Vector(array.length);


ведь initialCapacity это объем памяти, а при таком задании получается 3
бита, наверно.:confused:


Это не объем памяти. Это количество объектов, которое можно будет хранить в векторе, во внутреннем массиве, который используется для хранения данных. При таком создании внутри вектора будет создан массив длиной 3, в который будут сохраняться потом вставляемые в вектор объекты. Когда количество объектов станет больше, чем это current capacity, потребуется реаллокация для внутренних структур хранения данных, при этом новая capacity вектора станет currentCapacity + incrementCapacity.

Цитата:
а метод add, помоему сам задает initialCapacity, заново.


Что значит по твоему? В Javadoc все написано.

Цитата:
add(Object o)
Appends the specified element to the end of this Vector.


initial capacity он не изменит. Но если обнаружится, что текущая емкость меньше, чем размер, который будет иметь вектор после добавления нового элемента, то внутри вектора будет создан новый массив для хранения данных (старый уничтожится, его элементы будут скопированы в новый), но с длинной, увеличенной на incremental Capacity.

Цитата:

Я думаю что если пользоваться конструктором Vector(int initialCapacity),
Взяв за initialCapacity размер объекта в битах.

Можно будет обращаться к его элементам так:

 
Код:
v = var;


Таковы мои предположения.


Нельзя. Оператор индексации определен только для массивов.

355
28 декабря 2008 года
&lt;SCORP&gt;
786 / / 21.10.2006
да, вектор на самом деле актуален для java 1.4. посему так и отвечал (в смысле пример кода должен быть 1.4 compliant)
автору топика два совета - 1. найти книжку поактуальнее (на форуме есть ветка отдельная) 2. читать javadoc"и - в них 98% ответов
355
28 декабря 2008 года
&lt;SCORP&gt;
786 / / 21.10.2006
да, если не хватает javadoc, то можно и исходники JDK полистать. благо, они довольно вменяемые
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог