Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Объект содержащийся в статическом LinkedList'е


Автор: nucer 29.6.2004, 20:18
Пишу значит к примеру
Код
class Some
{
public static LinkedList list = new LinkedList (); // Сюда добавляются элементы в другом месте
public void removeItem ( int n )
{
 Some.list.remove( n );
}
}

И нифига... Никаких сообщений об ошибке, размер не меняется. Хотя если удалять снаружи то всё удаляется. Чего я делаю не правильно?

Автор: LSD 29.6.2004, 20:27
Должно рабоать. Попробуй вставить
Код
System.out.println("Deleteing element " + n);

и посмотреть что он тебе печатает.

Автор: Domestic Cat 29.6.2004, 21:04
Посмотрите что возврашает remove

Код

class Some
{
    private static LinkedList list = new LinkedList ();

    public void removeItem ( int n )
   {
          System.out.println(list.remove(n));
   }
}

Автор: nucer 29.6.2004, 23:09
Я пробовал
Код
System.out.println( list.size () );
list.remove( n );
System.out.println( list.size () );
- одинаково. Так как же удалять элементы и самого себя в таком случае?

Автор: Domestic Cat 29.6.2004, 23:34
Код

class Test
{
  public static java.util.LinkedList list = new java.util.LinkedList ();
 
   public static void main(String[] args)
  {
       list.add(new Object());
       list.add(new Object());
       list.add(new Object());
       list.add(new Object());
       System.out.println(list.size());
       list.remove(2);
       System.out.println(list.size());
       }
}


Данная программа выводит
4
3

Лучсе запостите всю программу, посмотрим в чем дело.

Автор: nucer 30.6.2004, 13:48
Всю программу выкладывать не буду, она большая.
2 Domestic Cat У вас по-другому, и я не до конца рассказал как у меня.
Каждый элемент ЛинкедЛиста это тоже объект класса Some, и удаляется он: Some.list.remove( this );

Автор: Domestic Cat 30.6.2004, 15:16
Все равно должно работать.
Код

public class Test
{
 Test()
 {
     SomeClass c1 = new SomeClass();
     SomeClass c2 = new SomeClass();
     SomeClass c3 = new SomeClass();
     SomeClass.list.add(c1);
     SomeClass.list.add(c2);
     SomeClass.list.add(c3);

     System.out.println(SomeClass.list.size());
     c1.removeFromList();
     System.out.println(SomeClass.list.size());
 }

  public static void main(String[] args)
  {
     Test test = new Test();
   }
}

class SomeClass
{
  public static java.util.LinkedList list = new java.util.LinkedList ();
  void removeFromList ()
  {
       list.remove(this);
   }
}

Выдает:
3
2

Skoree всего вы пытаетесь удалять из листа об#екты которых там нет.

Автор: nucer 30.6.2004, 18:08
Ё маё... Я сильно извиняюсь, действительно баг был в другом месте...
2 Domestic Cat спасибо, вы меня прям выручаете smile.gif))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)