Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> метод clone() у Vector (видимо) 
:(
    Опции темы
TupleCa
Дата 30.4.2008, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



Код


    public static void main(String[] args) {
            
        Vector a1 = new Vector();
        Vector a2 = new Vector();
       
        a1.add("10");
        a1.add("15");
        a1.add("20");
        a1.add("25");
        
        a2.add("5");
        a2.add("10");
        a2.add("15");
        a2.add("20");
     
        Vector A =new Vector();
        A.add(a1);
        A.add(a2);
        
        System.out.println("A: "+A.toString());
        
        Vector I = ins(A);
        
        System.out.println("I: "+I.toString());
        System.out.println("A: "+A.toString());
        
    }
    
    public static Vector ins(Vector _R){
        Vector R = (Vector)_R.clone();
        
        for(int i=0;i<R.size();i++){
            Vector Ti = (Vector)R.get(i);
            Ti.removeElementAt(0);
        }
        
        return R;
    }


выводит:
A: [[10, 15, 20, 25], [5, 10, 15, 20]]
I: [[15, 20, 25], [10, 15, 20]]
A: [[15, 20, 25], [10, 15, 20]]

почему A изменилось? как сделать что бы A не менялось? я же вроде внутри ins сделал клонирование вектора...


Это сообщение отредактировал(а) TupleCa - 30.4.2008, 07:43
PM   Вверх
ecologist
Дата 30.4.2008, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 452
Регистрация: 28.2.2007

Репутация: 2
Всего: 9



При клонировании создается копия списка ссылок на те же самые объекты - в твоем случае это векторы. Т.е. у двух векторов списки разные, но ссылки внутри этих списков на одни и те же объекты.
Так что все корректно.
PM MAIL   Вверх
AlexeyVorotnikov
Дата 30.4.2008, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Склонировался только вектор верхнего уровня. А подвекторы надо клонировать отдельно.


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
TupleCa
Дата 30.4.2008, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



это конечно хорошо, что всё корректно, но получается НИКАК нельзя сделать так что бы вектор вернул нормальную копию себя?
если можно, то как?
PM   Вверх
ecologist
Дата 30.4.2008, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 452
Регистрация: 28.2.2007

Репутация: 2
Всего: 9



А нормальная - это как ? Он сделал то, что надо - создал копию списка. А то, что у тебя еще и в списке ссылки на объекты - ну ты слишком много хочешь smile Делай сам, руками.
PM MAIL   Вверх
cube
  Дата 30.4.2008, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 11.4.2007

Репутация: 2
Всего: 3



Цитата(AlexeyVorotnikov @ 30.4.2008,  09:16)
Склонировался только вектор верхнего уровня. А подвекторы надо клонировать отдельно.

+1

Код

    public static Vector<Vector> ins(Vector<Vector> _R){
        Vector<Vector> R = new Vector();
        for(Vector Ti: _R)
          R.add((Vector)Ti.clone());
        
        for(Vector Ti: R)
          Ti.removeElementAt(0);
        return R;
    }


TupleCa, а че, это тебя так смущает?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.