Android: ArrayList Переместить элемент в положение 0 - PullRequest
4 голосов
/ 12 августа 2011

У меня есть ArrayList , и мне нужно убедиться, что определенный элемент находится в позиции 0, а если нет, мне нужно переместить его туда.На элементе есть логическое значение isStartItem, так что я могу легко найти конкретный элемент, который мне нужен, чтобы быть в позиции 0, но тогда как мне переместить его в нужную позицию?

Я предполагаю, что мне нужно использовать что-то вроде этого:

for(int i=0; i<myArray.size(); i++){    
    if(myArray.get(i).isStartItem()){
        Collection.swap(myArray, i, 0);
    }
}

Но, похоже, это не работает ...

Ответы [ 4 ]

16 голосов
/ 12 августа 2011

Вам необходимо использовать Collections метод класса swap. Collections, с s в конце.

Изменение -

Collection.swap(myArray, i, 0);

к этому -

Collections.swap(myArray, i, 0);

Взгляните на этот пример.

Коллекция и Коллекция - это две разные вещи в Java. Первый - это интерфейс, второй - класс. В последнем есть метод статического обмена, а в первом - нет.

5 голосов
/ 12 августа 2011

Я не знаю, что такое Collection.swap, но этот код должен работать:

for(int i=0; i<myArray.size(); i++){    
    if(myArray.get(i).isStartItem()){
        Collections.swap(myArray, i, 0);
        break;
    }
}

Или вы можете сделать это длинной рукой:

for(int i=0; i<myArray.size(); i++){    
    if(myArray.get(i).isStartItem()){
        Object thing = myArray.remove(i); // or whatever type is appropriate
        myArray.add(0, thing);
        break;
    }
}
0 голосов
/ 13 июня 2019

Существует два способа перемещения элемента в нужную позицию в ArrayList.

1.Поменяйте местами элементы

Collections.swap (myArray, i, 0);

-> Здесь позиция «i» будет перемещена в 0-ю позицию ивсе остальные элементы в этом диапазоне останутся без изменений.

2.Сдвиньте элементы

myArray.add (0, myArray.remove (i))

-> Здесь элемент в позиции «i» будет удалени добавил к 0-й позиции.Здесь все остальные позиции будут смещены при добавлении нового элемента в 0.

Надеюсь, что это поможет вам понять разницу между свопом и сдвигом позиции.Используйте решение в соответствии с вашими требованиями.

0 голосов
/ 12 августа 2011

Вы можете использовать функцию установки Arraylist.

set(position,object)
...