Есть список и удаляю данные со значением busy
но он оставляет 2-3 прля с этим значением .почему?
public class Metada {
int id,metr;
String name,curnumber,number,status;
public Metada(int id, String name, int metr, String curnumber, String number, String status) {
this.id = id;
this.name = name;
this.metr = metr;
this.curnumber = curnumber;
this.number = number;
this.status = status;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getMetr() {
return metr;
}
public void setMetr(int metr) {
this.metr = metr;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCurnumber() {
return curnumber;
}
public void setCurnumber(String curnumber) {
this.curnumber = curnumber;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
Далее
List<Metada> lst = new ArrayList<>();
Metada mMetada;
...
lst.add(new Metada(1,"jafar",236786785,"10-cu-345","055-444-33-33","busy"));
lst.add(new Metada(2,"alo",8678678,"10-cu-645","055-444-33-33","busy"));
lst.add(new Metada(3,"kazim",56786784,"10-cu-3453","055-444-33-33","free"));
lst.add(new Metada(4,"serav",26688346,"10-cu-45645","055-444-33-33","free"));
lst.add(new Metada(5,"farid",634634,"10-cu-6456","055-444-33-33","free"));
lst.add(new Metada(6,"kulia",2363465,"10-cu-456004","055-444-33-33","busy"));
lst.add(new Metada(7,"telm",457868678,"10-cu-064504","055-444-33-33","busy"));
lst.add(new Metada(8,"tenn",26786735,"10-cu-0064564","055-444-33-33","free"));
lst.add(new Metada(9,"tinton",287687635,"10-cu45645-004","055-444-33-33","busy"));
lst.add(new Metada(10,"qaqa",2386785,"10-cu-004","055-444-33-33","free"));
lst.add(new Metada(11,"koookk",267876835,"10-cu-0645604","055-444-33-33","busy"));
lst.add(new Metada(12,"poy",26787685,"10-cu-004","6456055-444-33-33","free"));
lst.add(new Metada(13,"telm",457868678,"10-cu-064504","055-444-33-33","busy"));
lst.add(new Metada(14,"tenn",26786735,"10-cu-0064564","055-444-33-33","free"));
lst.add(new Metada(15,"tinton",287687635,"10-cu45645-004","055-444-33-33","busy"));
lst.add(new Metada(16,"qaqa",2386785,"10-cu-004","055-444-33-33","free"));
lst.add(new Metada(17,"koookk",267876835,"10-cu-0645604","055-444-33-33","busy"));
lst.add(new Metada(18,"poy",26787685,"10-cu-004","6456055-444-33-33","free"));
Удаляю элементы и вывожу.Но вот некоторые не удаляются !Почему?
Log.d(TAG_LOG,"udalenie zanatix voditeley");
for (int i =0;i<lst.size();i++){
if (lst.get(i).getStatus().equals("busy")){
lst.remove(i);
}
}
Log.d(TAG_LOG,"Vivod posle udlenia zanatix");
for (int i = 0;i<lst.size();i++){
Log.d(TAG_LOG,"" +lst.get(i).getStatus());
}
А вот и вывод сам.
05-10 00:46:50.047 4277-4277/xyz.justart.aaaaaaaaaaaaaa D/Main Activity: busy
05-10 00:46:50.047 4277-4277/xyz.justart.aaaaaaaaaaaaaa D/Main Activity: free
05-10 00:46:50.047 4277-4277/xyz.justart.aaaaaaaaaaaaaa D/Main Activity: free
05-10 00:46:50.047 4277-4277/xyz.justart.aaaaaaaaaaaaaa D/Main Activity: free
05-10 00:46:50.047 4277-4277/xyz.justart.aaaaaaaaaaaaaa D/Main Activity: busy
05-10 00:46:50.047 4277-4277/xyz.justart.aaaaaaaaaaaaaa D/Main Activity: free
05-10 00:46:50.047 4277-4277/xyz.justart.aaaaaaaaaaaaaa D/Main Activity: free
05-10 00:46:50.047 4277-4277/xyz.justart.aaaaaaaaaaaaaa D/Main Activity: free
05-10 00:46:50.047 4277-4277/xyz.justart.aaaaaaaaaaaaaa D/Main Activity: free
05-10 00:46:50.047 4277-4277/xyz.justart.aaaaaaaaaaaaaa D/Main Activity: free
05-10 00:46:50.047 4277-4277/xyz.justart.aaaaaaaaaaaaaa D/Main Activity: free
Классически удалять надо с конца, т.к. индексы при удалении смещаются. По идее вы должны были получить IndexOutOfBoundsException. Это еще хорошо, что вы не используете "foreach", а то получили бы ConcurrentModificationException
. Правильно через итератор, так:
Iterator<Metada> it = lst.iterator();
while (it.hasNext()){
if (it.next().getStatus().equals("busy")){
it.remove();
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Впервые работаю с Java и Intelij idea, да и собственно с Селенидом тожеПрежде использовал с# со студией и побывал Селениум
Объясните пожалуйста, как происходит добавление объекта ZipEntry в архив с помощью метода putNextEntry() класса ZipOutputStream, так как я новичок не получается...