Страница 1 из 1

Object[] -> Vector

Добавлено: 02 авг 2004, 16:53
Oscar
Есть ли возможность преобразовать Object[] в Vector, кроме как поэлементно?

Добавлено: 02 авг 2004, 18:29
Deady
а чем поэлементно не нравится?
даже если и есть какой-нибудь метод, то по-любому, он поэлементно будет перекидывать, хотя методов таких я не припомню.

Добавлено: 02 авг 2004, 18:41
Oscar
Обратная задача:
============
Vector v=new Vector();
//заполнение Vectora
String[] s=new String[]{};
v.copyInto(s);
============

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

Можно и поэлементно, просто встроенные функции могут быстрее работать, да и выглядеть должно красивее..

Добавлено: 02 авг 2004, 18:53
AiK
метод класса Vector

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

 public synchronized void copyInto(Object anArray[]) {
    System.arraycopy(elementData, 0, anArray, 0, elementCount);
 }

Добавлено: 02 авг 2004, 19:40
Oscar
То есть если я разширю 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 не достану!..

Добавлено: 02 авг 2004, 22:54
Deady
ниче не понял... куда копируешь-то? и смысл всего этого?

делай так:

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

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);
...

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

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

Разве не правильно?....

Добавлено: 03 авг 2004, 06:48
Deady
правильно, но у класса Vector внутренний массив хитро зашит... я бы не стал его трогать.
если нужна скорость, используй ArrayList - это тоже что и Vector, но работает быстрее.