Вопрос:

Android: ArrayList Переместить элемент в положение 0

android collections arraylist swap

10652 просмотра

4 ответа

9152 Репутация автора

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

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

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

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

Автор: ryandlf Источник Размещён: 12.08.2011 04:12

Ответы (4)


16 плюса

21596 Репутация автора

Решение

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

Изменить -

Collection.swap(myArray, i, 0);

к этому -

Collections.swap(myArray, i, 0);

Посмотрите на этот пример.

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

Автор: MD Sayem Ahmed Размещён: 12.08.2011 04:16

-1 плюса

2522 Репутация автора

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

set(position,object)
Автор: Kakey Размещён: 12.08.2011 04:18

5 плюса

203461 Репутация автора

Я не знаю что 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;
    }
}
Автор: Ted Hopp Размещён: 12.08.2011 04:19

0 плюса

1018 Репутация автора

Есть 2 способа переместить элемент в нужную позицию в ArrayList.

1. Поменяйте местами предметы

Collections.swap (myArray, i, 0);

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

2. Перенести пункты

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

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

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

Автор: Jatin Размещён: 13.06.2019 05:34
Вопросы из категории :
32x32