+ Ответить в теме
Показано с 1 по 8 из 8

Тема: Object[] -> Vector

  1. #1
    system architect Oscar is on a distinguished road Аватар для Oscar
    Регистрация
    29.05.2004
    Адрес
    Мюнхен (рожден в Киеве)
    Возраст
    34
    Сообщений
    958
    Вес репутации
    15

    По умолчанию Object[] -> Vector

    Есть ли возможность преобразовать Object[] в Vector, кроме как поэлементно?

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
  3. #2
    developer Deady is on a distinguished road
    Регистрация
    17.02.2004
    Адрес
    Москва
    Сообщений
    193
    Вес репутации
    14

    По умолчанию

    а чем поэлементно не нравится?
    даже если и есть какой-нибудь метод, то по-любому, он поэлементно будет перекидывать, хотя методов таких я не припомню.

  4. #3
    system architect Oscar is on a distinguished road Аватар для Oscar
    Регистрация
    29.05.2004
    Адрес
    Мюнхен (рожден в Киеве)
    Возраст
    34
    Сообщений
    958
    Вес репутации
    15

    По умолчанию

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

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

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

  5. #4
    Administrator Админ
    system architect
    AiK is on a distinguished road Аватар для AiK
    Регистрация
    13.02.2004
    Адрес
    СПб
    Сообщений
    2,296
    Вес репутации
    80

    По умолчанию

    метод класса Vector
    Код :
    1.  public synchronized void copyInto(Object anArray[]) {
    2.     System.arraycopy(elementData, 0, anArray, 0, elementCount);
    3.  }
    Даже самый дурацкий замысел можно воплотить мастерски

  6. #5
    system architect Oscar is on a distinguished road Аватар для Oscar
    Регистрация
    29.05.2004
    Адрес
    Мюнхен (рожден в Киеве)
    Возраст
    34
    Сообщений
    958
    Вес репутации
    15

    По умолчанию

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

    Код :
    1. class MyVector extends Vector
    2. {
    3.  public synchronized void copyFrom(Object anArray[])
    4.  {
    5.     System.arraycopy(anArray, 0, elementData, 0, anArray.length());
    6.     //elementCount=anArray.length();
    7.  }
    8. }

    то я получу то, что хотел - да?

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

    Иначе я ведь protected Object[] elementData не достану!..

  7. #6
    developer Deady is on a distinguished road
    Регистрация
    17.02.2004
    Адрес
    Москва
    Сообщений
    193
    Вес репутации
    14

    По умолчанию

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

    делай так:
    Код :
    1. public class Copy {
    2.    public static void copyArray2Vector(Object[] array, Vector vec) {
    3.       for (int i=0; i<array.length; i++) {
    4.          vec.add(array[i]);
    5.       }
    6. }
    потом в проге:
    Код :
    1. import Copy;
    2.  
    3. ...
    4. String[] s = new String[50];
    5. Vector v = new Vector();
    6. ...
    7. Copy.copyArray2Vector(s, v);
    8. ...

  8. #7
    system architect Oscar is on a distinguished road Аватар для Oscar
    Регистрация
    29.05.2004
    Адрес
    Мюнхен (рожден в Киеве)
    Возраст
    34
    Сообщений
    958
    Вес репутации
    15

    По умолчанию

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

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

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

  9. #8
    developer Deady is on a distinguished road
    Регистрация
    17.02.2004
    Адрес
    Москва
    Сообщений
    193
    Вес репутации
    14

    По умолчанию

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

+ Ответить в теме

Похожие темы

  1. Application.InputBox...Object Required
    Sub t1() Dim r As Range Set r = Application.InputBox("sdf", "sdf", Type:=8) End Sub :shock: :shock: :shock: Run-time error...
    от Sokl в разделе MS Office и VB(A).
  2. vector<string> трабл
    Всем. привет наблюдаю странное поведение контейнеров. Вот есть ситуация, примерно. Структура struct NNINIT { .... vector<string>...
    от Alezis в разделе C и C++
  3. Правильно так "vector< vector<int> >",
    template<class T> class sss { }; template<class T> class addr{
    от Lev в разделе C и C++
  4. Проблема с std::vector(STL)
    Borland C++ v5.02 при выполнении программы (перед завершением) выдает Fault: acces violation at 0x43408a ead of address x20a0003f сразу...
    от Serge в разделе C и C++
  5. Тип элементов в Vector
    Внимательно выслушав ответы на предидущие вопросы, решил задать ещё один :D Как известно класс java.util.Vector содержит обьекты класса Object. ...
    от Oscar в разделе Java

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения