Удалить элемент из ArrayList Java .. с необходимостью доступа - PullRequest
0 голосов
/ 03 декабря 2011

У меня есть Arraylist кроликов.У каждого кролика есть String имя и String[] информации.

rabbit(String name, String[] informations)

У меня есть эти кролики в ArrayList, давайте назовем его rablistlist.

Я хочу сделатьтакой метод, как:

public void removerabbit(String name)

Я должен сделать какой-то цикл while, который я предполагаю, или a для каждого цикла, чтобы получить имена.Я сделал метод доступа getName (), который дает имя кролика.Просто возникли проблемы, чтобы обернуть мой мозг, чтобы понять, как.Должно быть просто.

Ответы [ 3 ]

1 голос
/ 03 декабря 2011

Если имя вашего Rabbit является уникальным идентификатором для Rabbit, вы можете переопределить метод equals для Rabbit, чтобы проверять только имя.В этом случае метод removeRabbit становится очень простым, поскольку встроенный метод удаления ArrayList использует метод equals, чтобы определить, какой элемент удалить.

public void removeRabbit( String rabbitName ){
  //just create a new Rabbit with rabbitName as name, 
  //and remove it from the list
  rabbitList.remove( new Rabbit( rabbitName ) ); 
}

В случае, если это невозможно,Вы можете перебирать список.Следующий код удалит всех кроликов с указанным именем.Если вы хотите удалить только первое, вы должны остановить цикл после удаления первого кролика.

public void removeRabbit( String name ){
  Iterator<Rabbit> rabbitIterator = rabbitList.iterator();
  while ( rabbitIterator.hasNext() ) {
    Rabbit next = rabbitIterator.next();
    if ( name.equals( next.getName() ) ){
      rabbitIterator.remove();
    }
  }
}
0 голосов
/ 03 декабря 2011

Вам нужно будет перебрать список rabbitList, чтобы найти кролика с заданным именем. Получите его индекс в rabbitList и удалите его из rabbitList. Ваш код должен быть примерно таким,

public boolean removeRabbit(String name){
Rabbit rabbit;
Iterator it = rabbitList.iterator();
while (it.hasNext()) {
    rabbit=it.next();
    if(name.equals(rabbit.getName()){    
        int index =rabbitList.indexOf(rabbit);
        //remove rabbit at this index,returns boolean
        return rabbitList.remove(index);
        }
    }
return false;
}

, это может работать снекоторые изменения ...

РЕДАКТИРОВАТЬ:

public boolean removeRabbit(String name){
Rabbit rabbit;
int index;
Iterator it = rabbitList.iterator();
while (it.hasNext()) {
    rabbit=it.next();
    if(name.equals(rabbit.getName()){    
        index =rabbitList.indexOf(rabbit);
        }
    }
//remove rabbit at this index,returns boolean
return rabbitList.remove(index);
}

это будет работать, может быть с некоторыми изменениями ...

0 голосов
/ 03 декабря 2011

Вам нужен java.util.Iterator, чтобы иметь возможность удалить элемент во время итерации по списку

Iterator<Rabbit> it = rabbits.iterator();
String nameForRemove = "rabbitName";
while(it.hasNext()) {
    if(it.next().getName().equals(nameForRemove)) it.remove();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...