Object[] -> Vector

Модератор: Absurd

Ответить
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Есть ли возможность преобразовать Object[] в Vector, кроме как поэлементно?
Deady
Сообщения: 193
Зарегистрирован: 17 фев 2004, 13:13
Откуда: Москва
Контактная информация:

а чем поэлементно не нравится?
даже если и есть какой-нибудь метод, то по-любому, он поэлементно будет перекидывать, хотя методов таких я не припомню.
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Обратная задача:
============
Vector v=new Vector();
//заполнение Vectora
String[] s=new String[]{};
v.copyInto(s);
============

Подумалось, может есть и Object[]->Vector.

Можно и поэлементно, просто встроенные функции могут быстрее работать, да и выглядеть должно красивее..
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

метод класса Vector

Код: Выделить всё

 public synchronized void copyInto(Object anArray[]) {
    System.arraycopy(elementData, 0, anArray, 0, elementCount);
 }
Даже самый дурацкий замысел можно воплотить мастерски
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

То есть если я разширю Vector примерно так:

Код: Выделить всё

class MyVector extends Vector
{
 public synchronized void copyFrom(Object anArray[])
 { 
    System.arraycopy(anArray, 0, elementData, 0, anArray.length()); 
    //elementCount=anArray.length();
 }
}
то я получу то, что хотел - да?

Не знаю, есть ли у anArray[] метод length()?
И не уверен, нужна ли закомментированная сторка?

Иначе я ведь protected Object[] elementData не достану!..
Deady
Сообщения: 193
Зарегистрирован: 17 фев 2004, 13:13
Откуда: Москва
Контактная информация:

ниче не понял... куда копируешь-то? и смысл всего этого?

делай так:

Код: Выделить всё

public class Copy {
   public static void copyArray2Vector(Object[] array, Vector vec) {
      for (int i=0; i<array.length; i++) {
         vec.add(array[i]);
      }
}
потом в проге:

Код: Выделить всё

import Copy;

...
String[] s = new String[50];
Vector v = new Vector();
...
Copy.copyArray2Vector(s, v);
...
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Deady, да-да, всё прекрасно. Но ..
думается мне, что System.arraycopy должно работать быстрее, чем for(..)vec.add(..);
Вот просто так чувствую, но доказать не могу ))

Я просто ... в вектор добавляю возможность экспорта Array в него...
А потом:
v.copyInto(s); // - Из Vector в String[]
v.copyFrom(s); // - Из String[] в Vector

Разве не правильно?....
Deady
Сообщения: 193
Зарегистрирован: 17 фев 2004, 13:13
Откуда: Москва
Контактная информация:

правильно, но у класса Vector внутренний массив хитро зашит... я бы не стал его трогать.
если нужна скорость, используй ArrayList - это тоже что и Vector, но работает быстрее.
Ответить